在线代码库依赖热更新命令示例:

  • 在线热更新代码库依赖,主要用于:
	当前自己的github代码已经依赖了第三方开源库,比如 github.com/xdg/stringprep。
	当 stringprep 库更新时,我们可能要同步stringprep最新commit的代码到我们自己的go.mod中。
	因此需要进行实时更新。
	GOSUMDB=off GOPROXY="https://goproxy.io|direct" go get -u -v github.com/xdg/stringprep
  • 以下依次介绍各项参数用途

GOSUMDB

  • 全称为 Go CheckSum Database,用来下载的包的安全性校验问题。
  • 包的安全性在使用 GoProxy 之后更容易出现,比如我们引用了一个不安全的 GoProxy 之后然后下载了一个不安全的包,这个时候就出现了安全性问题。对于这种情况,可以通过 GOSUMDB 来对包的哈希值进行校验。
  • 当然如果想要关闭哈希校验,可以将 GOSUMDB 设置为 off;如果要对部分包关闭哈希校验,则可以将包的前缀设置到环境变量中 GONOSUMDB 中,设置规则类似 GOPRIVATE。

GOPROXY

  • proxy 顾名思义,代理服务器。众所周知,有些 Golang 的 package 在国内是无法直接 go get 的。在之前,我们解决这个问题,一般都是通过设置 http_proxy/https_proxy 来解决。
  • GoProxy 相当于官方提供了一种 proxy 的方式让用户来进行包下载。要使用 GoProxy 只需要设置环境变量 GOPROXY 即可。目前公开的 GOPROXY 有:
	goproxy.io
	goproxy.cn: 由七牛云提供,参考 github repo

go get参数

  • -d 只下载不安装
  • -f 只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
  • -fix 在获取源码之后先运行 fix,然后再去做其他的事情
  • -t 同时也下载需要为运行测试所需要的包
  • -u 强制使用网络去更新包和它的依赖包
  • -v 显示执行的命令