在 Ubuntu 上用 Golang 打包(构建)时,依赖处理主要取决于你用的是 Go Modules(推荐) 还是老式的 GOPATH 方式。下面给你一套清晰、常用的做法。
cd your_project
go mod init github.com/yourname/yourproject
写代码后执行:
go mod tidy
它会:
go.mod 和 go.sumgo build -o app main.go
或者:
go build -o app .
go build -mod=readonly -o app .
或
go build -mod=vendor -o app .
go mod vendor
会生成:
vendor/
go.mod
go.sum
go build -mod=vendor -o app .
✅ 好处
go env -w GOPROXY=https://goproxy.cn,direct
或
export GOPROXY=https://goproxy.cn,direct
查看当前配置:
go env GOPROXY
go env -w GOPRIVATE=git.company.com,github.com/yourname
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app .
如果是 Docker 用:
CGO_ENABLED=0 go build -o app .
FROM golang:1.22 AS builder
WORKDIR /app
COPY . .
RUN go mod download
RUN go build -o app .
FROM ubuntu
COPY --from=builder /app/app /app
CMD ["/app"]
export GOPATH=/home/user/go
go get github.com/xxx/yyy
go build
Ubuntu 上 Go 打包依赖,用
go mod tidy+go mod vendor最稳,构建加-mod=vendor最安全。
如果你愿意,我可以:
直接贴你的 go.mod 或项目结构就行。