如何解决为什么go模块版本有时在go.sum
为什么单个模块版本有时在go.sum
中需要两行?
- 一行仅用于模块版本(在下面的示例中为
v0.1.1
) - 一行上还附加了
/go.mod
(在下面的示例中为v0.1.1/go/mod
)。
例如:
github.com/foo/bar v0.1.1 h1:kDgnGXZpvZUi7ym6Rm23yVn3gRqBag+vU6M/wytZR9c=
github.com/foo/bar v0.1.1/go.mod h1:MZcarCLffCxoj/EF1yhRb4HvOSmCkm5Z8FPmzWrMG+g=
我问的原因是,有时当我go get
一个软件包时,仅在上面示例的第二行中,会在go.sum
中生成间接依赖关系,然后构建会因{ {1}}用于该package @ version。但是,如果我手动410 gone
间接依赖,则构建不会因go get
而失败。
我相信这只会在私有存储库中发生,因此我知道sum.golang.org不能很好地发挥作用。但是,我想弄清楚是否有可能避免将410放在首位,尤其是在自动模块更新等方面。
解决方法
v0.1.1/go.mod
条目单独包含 go.mod
文件的校验和。这是在您加载或更改依赖项时确保一致性所必需的。
v0.1.1
条目(没有 /go.mod
后缀)包含模块完整源代码的校验和,包括其中包的所有 .go
源文件。
这两个部分是单独下载的,因此您无需下载您不打算构建或测试的依赖项的完整源代码(对于具有临时贡献者的项目来说,这是一种相当常见的情况)。但由于 go
命令单独下载它们,因此它们需要单独的校验和。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。