【问题标题】:How can I force a specific package version using go.mod?如何使用 go.mod 强制指定特定的包版本?
【发布时间】:2021-02-13 05:10:25
【问题描述】:

在我的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 modules + 我的代码库中严格使用 0.2.2 版本?

go mod tidy:

<filename here> 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

【问题讨论】:

  • 如果依赖项需要 0.6.3,则至少需要该版本。
  • @JimB 这是有道理的,但是,我的代码库使用的是更早的版本 (0.1.0),它构建了二进制文件并按预期工作,所以我不确定 go mod tidy 的确切位置我有一个依赖关系,因为当我运行git diff 时,我可以看到它抱怨的那些特定文件中没有包导入发生变化。很奇怪,对吧?
  • 您可以查看go mod graph 以查看完整的依赖关系树,这应该会告诉您为什么包含此版本。
  • 我跑了go mod graph | grep "controller-runtime"。我得到的只是v0.2.0-alpha.0,预期的版本,没有提到“最新版本”v0.6.3。这是预期的吗?
  • @carrots 如果版本没有被使用,不要担心 go.sum; go.sum 只是为了跟踪版本的哈希值;

标签: go go-modules


【解决方案1】:

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 也不包含该包”。

【讨论】:

    猜你喜欢
    • 2013-03-19
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2018-06-29
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多