srcbinpkg
pkg:保存归档文件(扩展名为 .a 的文件,即 archive 文件)这是程序编译后生成的静态库文件。
注意:在 pkg 下实际上还有一个平台相关目录(目标操作系统对应的目录),所有的归档文件都在这个目录下
当前出现了三个子目录
[root@localhost pkg]# ls
linux_amd64 mod sumdb
第一个目录 linux_amd64
因为该go环境是在Linux系统上运行的
//这个一个与平台相关的目录,即操作系统对应的目录
[root@localhost ligato]# pwd
/root/go/pkg/linux_amd64/github.com/ligato
[root@localhost ligato]# ls
vpp-agent.a
第二个目录 mod
[root@localhost mod]# ls
9fans.net cloud.google.com github.com golang.org google.golang.org go.starlark.net@v0.0.0-20200821142938-949cc6f4b097 go.uber.org mvdan.cc
cache git.fd.io go.etcd.io go.ligato.io gopkg.in gotest.tools@v2.2.0+incompatible honnef.co sigs.k8s.io
开启GO11MODULE=on 后,go get 安装的包将到 go/pkg下
go get -m [packages]会将下载的依赖包放到GOPATH/pkg/mod目录下,
并且将依赖写入到go.mod文件.
go get -u=patch会更新主模块下的所有依赖包。
Go 1.11版本支持临时环境变量GO111MODULE,通过该环境变量来控制依赖包的管理方式。
当GO111MODULE的值为on时GO111MODULE=off时GOPATH
使用顺序为:
vendorvendor$GOPATH/src$GOPATH$GOROOT/srcvendor$GOPATH
GO111MODULE=auto时
第三个目录 sumdb
[root@localhost sumdb]# ls
sum.golang.org
GOSUMDB
它的值是一个 Go checksum database,用于在拉取模块版本时(无论是从源站拉取还是通过 Go module proxy 拉取)
保证拉取到的模块版本数据未经过篡改,若发现不一致,也就是可能存在篡改,将会立即中止。
GOSUMDB的默认值为:sum.golang.org,在国内也是无法访问的,但是 GOSUMDB 可以被 Go 模块代理所代理(详见:Proxying a Checksum Database)。
因此我们可以通过设置 GOPROXY 来解决,而先前我们所设置的模块代理 goproxy.cn 就能支持代理 sum.golang.org,所以这一个问题在设置 GOPROXY 后,你可以不需要过度关心。