登录
首页 >  Golang >  Go问答

不能要求特定版本的非模块 Go 包

来源:stackoverflow

时间:2024-04-09 19:45:35 459浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《不能要求特定版本的非模块 Go 包》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我想要需要尚未转换为使用模块的特定版本的 go 包,我想在我的 go.mod 文件中需要它。具体来说,该包是“github.com/docker/docker/pkg/[email protected]”

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

$ go get -v github.com/docker/docker/pkg/[email protected]
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。我也注意到了“+不兼容”后缀,但我不确定这与该问题有什么关系。根据文档

go 命令会在没有 go.mod 文件的情况下向主要版本 2 或更高版本的版本添加 +不兼容的后缀。 +不兼容表示该版本与主版本号较低的版本属于同一模块;因此,go 命令可能会自动升级到更高的不兼容版本,即使它可能会破坏构建。

所以我知道这个包没有 go.mod 文件,但是下载的版本(17.x)大于 2,所以我不认为 +不兼容的 是问题。

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

这是我想使用的版本

这是下载的


解决方案


go.mod pseudo-version 中列出的版本对于不是 go 模块的存储库并不重要。 v19.03.13 版本不是语法上有效的语义版本,因此 go 工具将沿着提交树查找版本,它遇到的第一个有效的 semver 恰好是 v17.12.0 (这并不是一个语义版本)版本,但至少是有效的)。只要 go 本身可以重现并解析结果,领先版本不是伪版本中所期望的版本这一事实就不是问题。

如果您查看尾随提交哈希,您会发现 bd33bbf0497b,这是 v19.03.13 标记的正确提交 ID。

今天关于《不能要求特定版本的非模块 Go 包》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>