我正在尝试使用go模块将新包添加到我的项目中。该软件包使用github.com/docker/docker/client,在项目外部运行良好。当我运行go mod vendor
时,它会拉取v1.13.1版本的docker客户端软件包,该软件包没有我在代码中使用的某些方法,但是在go模块中,它被标记为最新方法。如何让go mod使用真正最新的软件包?
答案 0 :(得分:2)
这也使我发疯:下载“ master”或“ latest”标签通常会在HEAD之前下载一或两次提交的版本。我找到了答案here:
go命令默认为从公共Go下载模块 位于proxy.golang.org的模块镜像。它也默认验证 下载的模块,无论来源如何,都针对公共Go 校验和数据库位于sum.golang.org。这些默认设置适用于 公开的源代码。
显然,正在进行一些缓存;如果您稍等片刻通常可以开始工作,或者可以将版本暂时设置为特定的提交。
要解决此问题,我设置了temp
。
答案 1 :(得分:0)
为了获取最新的未标记版本,您需要指定执行 go get
时想要的提交标记。go get github.com/docker/docker/client@[commit-hash]
答案 2 :(得分:0)
在需要时,可以使用诸如
go get foo@v1.2.3
,go get foo@master
,go get foo@e3702bed2
之类的命令或直接编辑go.mod
来选择更具体的依赖项版本。
如果您需要在master
分支上进行最新提交,请使用
go get github.com/docker/docker/client@master
答案 3 :(得分:0)
建议使用特定版本(首选标记版本,如果不是最新的伪版本而不是主版本)。在go.mod文件中锁定依赖项版本可确保可重复性。
其中一个使用代理的最新版本是https://search.gocenter.io/github.com~2Fdocker~2Fdocker/info?version=v1.14.0-0.20190511020111-3998dffb806f
答案 4 :(得分:0)
花了最近20个小时尝试解决一个类似的问题,以我为例,以下步骤解决了该问题:
$GOPATH/pkg/sumdb