我最近开始在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
的依赖关系,但似乎没有解决这个问题。
有人知道如何解决这个问题吗?
7条答案
按热度按时间vsaztqbk1#
您可以运行
go clean -modcache
,然后运行go mod tidy
,这将重新下载所有具有正确校验和的dep(这将更新$GOPATH/pkg/mod/
中的pkg缓存)。要更新
vendor/
文件夹,请运行:go mod vendor
.kqlmhetl2#
1.移除go.总和:rm go.sum
1.重新生成go.sum:保持适度整洁
wr98u20j3#
你使用的是哪个版本的Go?很有可能你会遇到
1.11.2 -> 1.11.4
的后果:记住,
go mod
仍在开发中,所以类似的事情可能会在1.13之前发生。一定要阅读Go的次要版本,以及这些事情是如何发生的:https://github.com/golang/go/wiki/MinorReleases
TL;DR -升级Go
f5emj3cl4#
我在使用1.12.8时也遇到了同样的问题,没有缓存清理会有帮助。结果我仍然被锁定在GOPATH和Mod世界的中间。我在另一篇文章中找到了一个标志(How do I migrate from Dep to Go Modules),它为我做了这个把戏。
ao218c7q5#
我也遇到了同样的问题。我更新了go版本,删除了go.mod中的导入,删除了go.sum中的所有条目,然后运行gomo tidy,它下载了所有的依赖项,没有任何问题。
jm81lzqq6#
您需要从go.sum文件中删除您的包。如果您从终端模式运行,使用CI/CD或Dockerfile,您可以使用sh命令:
它可以:
*sed- unix应用程序
*/d '-表示删除行
*go.sum-我们的golang sum文件
*〉temp.txt-将输出保存到临时文件
*mv temp.txt go.sum-使用临时文件重写go.sum
注:
go mod tidy
-只删除未使用的软件包和添加新版本。但它不删除旧版本。rjzwgtxy7#
你可以这样尝试:
删除mod缓存中的相关文件