微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么go模块版本有时在go.sum

如何解决为什么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 举报,一经查实,本站将立刻删除。