登录
首页 >  Golang >  Go问答

如何使用 go.mod 强制使用特定的软件包版本?

来源:stackoverflow

时间:2024-04-10 18:18:36 297浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《如何使用 go.mod 强制使用特定的软件包版本?》将会介绍到等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

在我的 go.mod 中,我有:

...
require (
  ...
  sigs.k8s.io/controller-runtime v0.2.0-alpha.0
)

由于某种原因,当我保存文件时,我的 go.sum 会更新为包括:

sigs.k8s.io/controller-runtime v0.2.0-alpha.0 h1:wm6lus3snu4ssmldyvjj5fylsg9nw3ffb/4/fpe2zgrtnc=
sigs.k8s.io/controller-runtime v0.2.0-alpha.0/go.mod h1:hfasyooh6xmv+jkf1rsujfwrknpbowfyhehh5frdjmf2jmx8=
sigs.k8s.io/controller-runtime v0.6.3 h1:sbbr+inlpekhrf87vljtrvdcwipm+uhdvp63bl72xyjtooe=
sigs.k8s.io/controller-runtime v0.6.3/go.mod h1:wlznxcms40++oyaqt4b7cs2lee5jyrs8vjuznj4arp4n4jpday=

前两个,我明白它们为什么在那里。但是,为什么突然也出现了最新版本(0.6.3)的包呢?

当我运行 go mod tidy 时,我收到错误消息,提示我的代码库中的 2 个文件指向该包的最新版本 (0.6.3) 中的包。我该怎么做才能在我的代码库中严格使用 go module + 中的 0.2.2 版本?

go mod tidy

 imports
    sigs.k8s.io/controller-runtime/pkg/webhook/admission/builder: module sigs.k8s.io/controller-runtime@latest found (v0.6.3), but does not contain package sigs.k8s.io/controller-runtime/pkg/webhook/admission/builder

解决方案


v0.2.0-alpha.0 似乎已经是您的模块正在使用的版本,因此您不需要执行任何操作来“强制”它。 (您使用的 go 命令的版本可能会在出错之前错误地保存 go.sum 文件。如果使用最新版本(当前为 go1.16rc1)重现该问题,请在以下位置提交问题,并提供重现该问题的步骤: https://golang.org/issue/new .

错误消息告诉您 go 命令正在查找丢失的软件包 (sigs.k8s.io/controller-runtime/pkg/webhook/admission/builder)。

它正在检查可能包含该软件包的模块的最新版本,但最新版本(v0.6.3,而您的模块需要 v0.2.0-alpha.0)仍然不包含该软件包。

所以 go 命令本质上是在告诉您:“我缺少包 sigs.k8s.io/controller-runtime/pkg/webhook/admission/builder,并且我无法通过升级来修复它,因为 v0.6.3 确实也不包含该包”。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

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