Go 模块拉取旧版本的包

nav*_*nte 5 go docker go-modules

我正在尝试使用 go 模块向我的项目添加一个新包。这个包使用 github.com/docker/docker/client 并且在项目之外工作正常。当我运行go mod vendor它时,它会拉取版本 v1.13.1 的 docker 客户端包,它没有我在代码中使用的一些方法,但在 go 模块中它被标记为最新的。如何让 go mod 使用真正最新版本的软件包?

kni*_*nap 7

这也让我发疯:下载“master”或“latest”标签通常会下载 HEAD 之前一到两个提交的版本。我在这里找到了答案:

go 命令默认从 proxy.golang.org 上的公共 Go 模块镜像下载模块。它还默认根据 sum.golang.org 上的公共 Go 校验和数据库验证下载的模块,无论其来源如何。这些默认值适用于公开可用的源代码。

显然正在进行一些缓存;如果您等待一段时间,它通常会开始工作,或者它有助于暂时将版本设置为特定提交。

为了解决这个问题,我设置了GOPRIVATE=github.com/myuser.

  • 从发行说明 https://golang.org/doc/go1.13 中:`go env -w GOPROXY=direct` 来禁用这种脑死亡行为。谢谢你——我也快疯了。 (5认同)

icz*_*cza 5

Go Wiki:模块:

需要时,可以使用go get foo@v1.2.3go get foo@master、等命令go get foo@e3702bed2或通过go.mod直接编辑来选择更具体的依赖项版本。

如果您需要master分支上的最新提交,请使用

go get github.com/docker/docker/client@master
Run Code Online (Sandbox Code Playgroud)