在 Ubuntu 上用 Go 打包(构建)慢,通常不是 Ubuntu 本身的问题,而是环境、配置或项目结构导致的。下面按最常见原因 → 排查方式 → 解决办法来说明。
Go 默认从 proxy.golang.org 拉依赖,国内或网络差时会非常慢。
表现
go build 卡在 go: downloading ...解决
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=off
(中国用户推荐 goproxy.cn 或 proxy.golang.io)
Go 会缓存依赖,但以下情况会反复下载:
GOPATH 被改/root/go 或 ~/.cache/go-build 被清解决
COPY go.mod go.sum ./
RUN go mod download
很多 Ubuntu 默认启用 CGO。
检查
go env CGO_ENABLED
影响
解决(纯 Go 项目)
CGO_ENABLED=0 go build
检查
nproc
free -h
优化
go build -p 4
例如:
netcrypto/tlsdatabase/sql会触发 CGO 或大量代码生成。
//go:generate如:
会在 build 前花大量时间。
Ubuntu 上的:
clamav会扫描每次生成的二进制。
go env GOPROXY
go env CGO_ENABLED
go env GOCACHE
nproc
go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=off
CGO_ENABLED=0 go build -trimpath -ldflags="-s -w"
你可以补充:
go build 卡在哪一步我可以直接给你针对性优化方案。