【发布时间】: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