不需要特定版本的非模块Go软件包

问题描述

我想要一个尚未转换为使用模块的Go软件包的特定版本,我想在我的go.mod文件中要求它。具体来说,该软件包是“ github.com/docker/docker/pkg/system@v19.03.13”

运行以下命令时,得到以下输出:

$ go get -v github.com/docker/docker/pkg/system@v19.03.13
go: found github.com/docker/docker/pkg/system in github.com/docker/docker v17.12.0-ce-rc1.0.20200916142827-bd33bbf0497b+incompatible

如您所见,版本v17.12.0-ce是下载的,而不是v19.03.13。我确实也注意到“ + incompatible”后缀,但是我不确定这与该问题有任何关系。根据{{​​3}}

go命令向主版本2或更高版本的版本(不带有go.mod文件)添加+不兼容的后缀。 +不兼容表示版本与主版本号较低的版本属于同一模块;因此,尽管go命令可能会破坏构建,但它可能会自动升级到更高版本的+不兼容版本。

所以我知道此软件包没有go.mod文件,但是下载的版本(17.x)大于2,所以我认为不是+incompatible的问题。 / p>

我的问题是:当我指定版本v19.03.13时,为什么Go安装v17.12.0-ce

docs是我要使用的版本

This是已下载的版本

解决方法

go.mod pseudo-version中列出的版本对于不是go模块的存储库无关紧要。我不确定go是如何从提交中派生出v17.12.0-ce-rc1.0.20200916142827的,而不是v19.03.13-20200916142827v0.0.0-20200916142827的,但这不是问题,只要go本身可以复制并解析结果。

如果查看尾随的提交哈希,您将拥有bd33bbf0497b,它是v19.03.13标签的正确提交ID。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...