不能要求特定版本的非模块 Go 包
Cannot require certain version of a non-module Go package
我想要求某个版本的 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
。我确实也注意到了“+不兼容”后缀,但我不确定这与这个问题有什么关系。根据 docs
the go command adds an +incompatible suffix to versions with major version 2 or higher without a go.mod file. +incompatible indicates that a version is part of the same module as versions with lower major version numbers; consequently, the go command may automatically upgrade to higher +incompatible versions even though it may break the build.
所以我知道这个包没有 go.mod
文件,但是下载的版本 (17.x) 大于 2,所以我认为 +incompatible
不是问题。
我的问题是:当我指定版本 v19.03.13
时,为什么 Go 安装 v17.12.0-ce
?
This是我要用的版本
This是下载的那个
go.mod
pseudo-version 中列出的版本对于不是 go 模块的存储库无关紧要。版本 v19.03.13
不是语法上有效的语义版本,因此 go 工具将沿着提交树向上查找,它遇到的第一个有效的 semver 恰好是 v17.12.0
(这不是故意的一个语义版本,但它至少是有效的)。只要 go 本身可以重现和解析结果,领先版本不是 pseudo-version 中预期的这一事实就不是问题。
如果您查看尾随的提交哈希,您有 bd33bbf0497b
,这是 v19.03.13
标记的正确提交 ID。
我想要求某个版本的 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
。我确实也注意到了“+不兼容”后缀,但我不确定这与这个问题有什么关系。根据 docs
the go command adds an +incompatible suffix to versions with major version 2 or higher without a go.mod file. +incompatible indicates that a version is part of the same module as versions with lower major version numbers; consequently, the go command may automatically upgrade to higher +incompatible versions even though it may break the build.
所以我知道这个包没有 go.mod
文件,但是下载的版本 (17.x) 大于 2,所以我认为 +incompatible
不是问题。
我的问题是:当我指定版本 v19.03.13
时,为什么 Go 安装 v17.12.0-ce
?
This是我要用的版本
This是下载的那个
go.mod
pseudo-version 中列出的版本对于不是 go 模块的存储库无关紧要。版本 v19.03.13
不是语法上有效的语义版本,因此 go 工具将沿着提交树向上查找,它遇到的第一个有效的 semver 恰好是 v17.12.0
(这不是故意的一个语义版本,但它至少是有效的)。只要 go 本身可以重现和解析结果,领先版本不是 pseudo-version 中预期的这一事实就不是问题。
如果您查看尾随的提交哈希,您有 bd33bbf0497b
,这是 v19.03.13
标记的正确提交 ID。