为什么使用-u时go get下载同一软件包的两个版本

6ovsh4lw  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(254)

我使用go get -u来获取一个依赖于golang.org/x/text@v0.3.7的包。我注意到它首先下载golang.org/x/text@v0.3.7,然后下载golang.org/x/text@v0.4.0
然后运行go clean -modcachego get golang.org/x/text,下载了golang.org/x/textv0.4.0,然后又下载了go get -u entgo.io/ent,这次go没有下载golang.org/x/text@v0.3.7
那么,为什么go get -u在本地没有最新版本时同时下载旧版本和最新版本,以及为什么在本地有最新版本时不下载旧版本?

yc0p9oo0

yc0p9oo01#

因为这是一个两步的过程
1.正在取得相依性
1.更新依赖关系
从编程的Angular 来看,没有充分的理由将这些合并到“获取最新依赖项”的单个关注点中。
在go命令文档中:
-u标志指示get更新提供命令行上指定的包的依赖关系的模块,以使用更新的次要版本或修补程序版本(如果可用)。
这意味着-u专门处理你要得到的包所依赖的模块,而不是你要得到的包的模块。
此外,-u似乎不支持将v0版本中的任何变化都视为主要版本变化的Go语言习惯,因此我们不能轻率地推荐使用-u,因为README of golang.org/x/test甚至会说:
在x/text达到1.0.0版本之前,次要版本被认为是主要版本。所以从0.1.0到0.2.0被认为是主要版本的升级。

相关问题