Go模块:校验和不匹配

j9per5c4  于 2023-04-03  发布在  Go
关注(0)|答案(7)|浏览(222)

我最近开始在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的依赖关系,但似乎没有解决这个问题。
有人知道如何解决这个问题吗?

vsaztqbk

vsaztqbk1#

您可以运行go clean -modcache,然后运行go mod tidy,这将重新下载所有具有正确校验和的dep(这将更新$GOPATH/pkg/mod/中的pkg缓存)。
要更新vendor/文件夹,请运行:go mod vendor .

kqlmhetl

kqlmhetl2#

1.移除go.总和:rm go.sum
1.重新生成go.sum:保持适度整洁

wr98u20j

wr98u20j3#

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

记住,go mod仍在开发中,所以类似的事情可能会在1.13之前发生。
一定要阅读Go的次要版本,以及这些事情是如何发生的:https://github.com/golang/go/wiki/MinorReleases
TL;DR -升级Go

f5emj3cl

f5emj3cl4#

我在使用1.12.8时也遇到了同样的问题,没有缓存清理会有帮助。结果我仍然被锁定在GOPATH和Mod世界的中间。我在另一篇文章中找到了一个标志(How do I migrate from Dep to Go Modules),它为我做了这个把戏。

go run -mod=vendor main.go
ao218c7q

ao218c7q5#

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

jm81lzqq

jm81lzqq6#

您需要从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

注:go mod tidy-只删除未使用的软件包和添加新版本。但它不删除旧版本

rjzwgtxy

rjzwgtxy7#

你可以这样尝试:

$ 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

相关问题