Go 模块:校验和不匹配



我最近开始使用 Go 中的模块,但我经常遇到在一台机器上一切正常的问题,但在另一台机器上构建代码库时会遇到校验和不匹配。

该问题始终涉及相同的第三方依赖项 (github.com/ericlagergren/decimal):

go: verifying github.com/ericlagergren/decimal@v0.0.0-20181231230500-73749d4874d5: checksum mismatch
    downloaded: h1:HQGCJNlqt1dUs/BhtEKmqWd6LWS+DWYVxi9+Jo4r0jE=
    go.sum:     h1:x4oNpFLLl+8l+iLgksNHzZewTS0SKp6m0hlLwzXRbqA=

我已经尝试了各种方法:删除和重新生成go.sum,将Go本身升级到最新的补丁版本并从go.mod中删除依赖项,但似乎没有什么可以解决这个问题。

有没有人知道如何解决这个问题?

您可以运行go clean -modcache然后go mod tidy,这将使用正确的校验和重新下载所有deps(这会更新$GOPATH/pkg/mod/中的pkg缓存)。

要更新vendor/文件夹运行:go mod vendor

  1. 删除 go.sum : rm go.sum
  2. 重新生成 go.sum : Go mod tidy

你使用的是哪个版本的 Go?你很有可能遇到1.11.2 -> 1.11.4的后果:

  • https://github.com/golang/go/issues/27093
  • https://github.com/golang/go/issues/27925
  • https://github.com/golang/go/issues/29278

这仍然没有完全解决。请记住,go mod 仍在开发中,因此这样的事情可能会发生到 1.13。

请务必阅读 Go 的次要版本,以及这些事情是如何发生的:https://github.com/golang/go/wiki/MinorReleases

DR - 升级 Go

由于GOPROXY,我遇到了这个问题,通过更改代理地址解决了这个问题。

我在使用 1.12.8 时遇到了同样的问题,并且没有缓存清理会有所帮助。原来我仍然被锁定在GOPATH和Mod世界的中间。我在另一篇文章中找到了一个标志(如何从 Dep 迁移到 Go 模块),它为我提供了

诀窍。
go run -mod=vendor main.go

我遇到了同样的问题。我更新了go版本并从go.mod中删除了导入,并从go.sum中删除了所有条目,然后运行了gomo整洁,它下载了所有依赖项而没有任何问题。

您需要从 go.sum 文件中删除您的软件包。如果您从终端模式运行,使用 CI/CD 或 Dockerfile,您可以使用该 sh 命令:

sed '/^github.com/ericlagergren/decimal@/d' ./go.sum > temp.txt && mv temp.txt go.sum

它确实:

  • SED - Unix 应用程序
  • '/^ - 起始行
  • github.com\/hyperledger\/fabric v1.4.4 - 您的软件包名称(实际上是 RegEX 行,屏蔽 /\
  • /d' - 表示删除行
  • go.sum - 我们的 golang sum 文件
  • > temp.txt - 将输出保存到临时文件
  • mv temp.txt go.sum - 用临时文件重写我们的 go.sum

PS:go mod tidy - 仅删除未使用的软件包并添加新版本。但它不会删除旧人

你可以这样尝试:

$ go get sigs.k8s.io/controller-runtime@v0.14.1
go: downloading sigs.k8s.io/controller-runtime v0.14.1
verifying sigs.k8s.io/controller-runtime@v0.14.1/go.mod: checksum mismatch
        downloaded: h1:GaRkrY8a7UZF0kqFFbUKG7n9ICiTY5T55P1RiE3UZlU=
        go.sum:     h1:G7mAYYxgmS0lVkHyy2hEOLQCFB0DlQFTMLWggykrydY=

删除 Mod 缓存上的关联文件

# rm -rf ~/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.14.1/
# rm ~/go/pkg/mod/cache/download/sigs.k8s.io/controller-runtime/@v/v0.14.1.zip
# rm ~/go/pkg/mod/cache/download/sigs.k8s.io/controller-runtime/@v/v0.14.1.info
# rm ~/go/pkg/mod/cache/download/sigs.k8s.io/controller-runtime/@v/v0.14.1.mod
# rm ~/go/pkg/mod/cache/download/sigs.k8s.io/controller-runtime/@v/v0.14.1.lock
# rm ~/go/pkg/mod/cache/download/sigs.k8s.io/controller-runtime/@v/v0.14.1.ziphash

最新更新