Linux下Golang包管理实践
一 核心机制与关键配置
go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,directgo env -w GOPRIVATE=git.mycorp.com,*.mycorp.comgo env -w GOSUMDB=on(或设置为off跳过校验,不推荐)go mod init、go get <pkg>@<version>、go mod tidy、go mod vendor、go clean -modcache。二 日常依赖管理流程
go mod init <模块名>,推荐模块名使用代码托管地址形式,如github.com/your-org/your-repo,生成go.mod与go.sum。go mod tidy(补齐缺失、移除未用)。go get github.com/gin-gonic/gin@v1.9.1;升级到最新兼容版本:go get -u github.com/gin-gonic/gin;升级全部依赖:go get -u all(注意回归测试)。replace指令,例如:
replace github.com/old/pkg => github.com/new/pkg v1.2.3replace github.com/foo/bar => ../bargo mod vendor将依赖打入项目**vendor/**目录并在CI中启用-mod=vendor构建。go clean -modcache;查看依赖图go mod graph。三 多项目与版本共存
PATH选择版本;适合对版本与目录布局有完全控制需求的场景。四 GOPATH模式与常见误区
GOPATH为项目路径。replace做长期“猴子补丁”,应通过升级依赖或推动上游修复解决。go.mod/go.sum,CI中执行go mod tidy并检查go.sum变更。五 常用命令速查表
| 场景 | 命令示例 |
|---|---|
| 初始化模块 | go mod init github.com/your-org/your-repo |
| 添加/升级依赖 | go get github.com/gin-gonic/gin@v1.9.1;go get -u;go get -u all |
| 整理依赖 | go mod tidy |
| 本地vendor化 | go mod vendor;构建时加-mod=vendor |
| 查看依赖图 | go mod graph |
| 校验依赖一致性 | go mod verify |
| 清理模块缓存 | go clean -modcache |
| 设置国内代理 | go env -w GOPROXY=https://goproxy.cn,direct |
| 设置私有仓库 | go env -w GOPRIVATE=git.mycorp.com,*.mycorp.com |