Linux环境下Go语言包管理工具使用指南
Go Modules是Go语言当前官方推荐的依赖管理工具,解决了传统GOPATH模式的版本冲突、依赖隔离等问题,适用于新项目开发。
export GO111MODULE=on # 启用Go Modules(默认auto,仅在项目目录外且存在go.mod时生效)
export GOPROXY=https://goproxy.cn,direct # 国内镜像加速(避免网络问题)
go.mod(记录依赖信息)和go.sum(校验依赖完整性)文件。go mod init <module-name> # 如:go mod init github.com/username/project
go.mod。go get <package-path>[@version] # 如:go get github.com/gin-gonic/gin@v1.9.1
go get -u # 更新所有依赖
go get -u <package-path> # 更新指定包
go.mod中未实际使用的依赖。go mod tidy
$GOPATH/pkg/mod目录(默认缓存路径)。go mod download
vendor文件夹(用于离线编译)。go mod vendor
go.mod文件,指定版本(如require github.com/gin-gonic/gin v1.9.1),再执行go mod tidy;GOPROXY为国内镜像(如https://goproxy.cn),加速依赖下载;GOPRIVATE环境变量,跳过代理(如export GOPRIVATE=github.com/yourcompany/*)。$GOPATH/src目录下,依赖统一下载至$GOPATH/pkg/mod(Go 1.11+仍支持,但无法解决版本冲突);export GOPATH=$HOME/go # 推荐路径
export PATH=$PATH:$GOPATH/bin # 添加bin目录到PATH
go get:下载依赖至$GOPATH/src(如go get github.com/gin-gonic/gin)。curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
dep init(生成Gopkg.toml(依赖清单)、Gopkg.lock(版本锁定)、vendor目录);dep ensure -add <package-path>(将依赖添加至vendor);dep ensure -update(更新vendor中的依赖)。go get -u github.com/kardianos/govendor
govendor init(生成vendor目录和vendor.json文件);govendor fetch <package-path>@version(下载依赖至vendor);govendor sync(根据vendor.json同步依赖)。go mod init即可迁移);go.mod和go.sum需纳入版本控制(如Git),确保团队依赖一致;go clean -modcache(删除$GOPATH/pkg/mod下的所有依赖)。