温馨提示×

ubuntu golang打包依赖咋处理

小樊
42
2026-10-04 09:01:15
栏目: 编程语言

在 Ubuntu 上用 Golang 打包(构建)时,依赖处理主要取决于你用的是 Go Modules(推荐) 还是老式的 GOPATH 方式。下面给你一套清晰、常用的做法。


一、推荐方式:Go Modules(Go 1.11+,现在主流)

1. 初始化模块(如果还没做)

cd your_project
go mod init github.com/yourname/yourproject

2. 自动拉取依赖

写代码后执行:

go mod tidy

它会:

  • 添加需要的依赖
  • 删除没用的依赖
  • 生成 go.mod 和 go.sum

3. 构建(打包)

go build -o app main.go

或者:

go build -o app .

4. 离线 / 稳定构建(重要)

go build -mod=readonly -o app .

或

go build -mod=vendor -o app .

二、把依赖打包进项目(vendor,适合部署)

生成 vendor 目录

go mod vendor

会生成:

vendor/
go.mod
go.sum

使用 vendor 构建

go build -mod=vendor -o app .

✅ 好处

  • 不依赖网络
  • 适合服务器、Docker、离线环境

三、Ubuntu 常见环境注意点

1. 设置 GOPROXY(国内/公司网络很重要)

go env -w GOPROXY=https://goproxy.cn,direct

或

export GOPROXY=https://goproxy.cn,direct

查看当前配置:

go env GOPROXY

2. 私有仓库(公司 Git)

go env -w GOPRIVATE=git.company.com,github.com/yourname

3. 交叉编译(比如 Ubuntu 上打 Linux 二进制)

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app .

如果是 Docker 用:

CGO_ENABLED=0 go build -o app .

四、Docker 里打包(最佳实践)

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 最安全。

如果你愿意,我可以:

  • 帮你写 完整构建脚本
  • 帮你配 Docker + Go 最小镜像
  • 看你项目结构,指出依赖问题

直接贴你的 go.mod 或项目结构就行。

0 踩