gpt4 book ai didi

go - 为什么 go 模块版本有时在 go.sum 中需要 2 行

转载 作者:行者123 更新时间:2023-12-04 13:33:18 26 4
gpt4 key购买 nike

为什么单个模块版本有时需要在 go.sum 中使用 2 行?

  • 一行仅用于模块版本(以下示例中的 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中产生间接依赖仅使用上面示例中的第二行,然后构建将失败并显示 410 gone对于那个包@version。但是,如果我手动 go get间接依赖,构建不再失败 410 gone .
    我相信这只会发生在私有(private)存储库中,所以我知道它不会与 sum.golang.org 一起使用。但是,我想弄清楚是否有可能首先避免使用 410,尤其是在自动模块更新等方面。

    最佳答案

    v0.1.1/go.mod条目包含 go.mod 的校验和文件隔离。这是在加载或更改依赖项时确保一致性所必需的。v0.1.1条目(没有 /go.mod 后缀)包含模块完整源代码的校验和,包括所有 .go其中包的源文件。
    这两部分是单独下载的,因此您无需下载不打算构建或测试的依赖项的完整源代码(对于具有临时贡献者的项目来说,这是一种相当常见的情况)。但是因为go命令单独下载它们,它需要单独的校验和。

    关于go - 为什么 go 模块版本有时在 go.sum 中需要 2 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63721953/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com