我最近开始在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
删除依赖项,但是似乎没有任何方法可以解决此问题。
有人知道如何解决此问题吗?
答案 0 :(得分:9)
您正在使用哪个版本的Go?您很有可能会遇到1.11.2 -> 1.11.4
的后果:
还有哪些尚未完全解决。请记住,go mod
仍在开发中,因此类似的事情可能会发生直到1.13。
请务必阅读Go的次要版本,以及这些事情如何发生:https://github.com/golang/go/wiki/MinorReleases
TL; DR-升级Go
答案 1 :(得分:4)
您可以先运行go clean -modcache
,然后再运行go mod tidy
,这将重新下载具有正确校验和的所有dep。
答案 2 :(得分:3)
答案 3 :(得分:0)
我在使用1.12.8时遇到了同样的问题,没有缓存清理将有所帮助。原来,我仍然处于GOPATH和Mod世界的中间。我在另一则帖子(How do I migrate from Dep to Go Modules)中找到了一个标志,该标志对我有用。
go run -mod=vendor main.go
答案 4 :(得分:0)
我有同样的问题。我更新了go版本,并从go.mod中删除了导入,并从go.sum中删除了所有条目,然后运行go tidy,这将下载所有依赖项而没有任何问题。
答案 5 :(得分:0)
您需要从 go.sum 文件中删除软件包。 如果从终端模式运行,则使用CI / CD或Dockerfile,可以使用该 sh 命令:
go mod tidy
哪个:
P.S。:{{1}}-仅删除未使用的软件包并添加新版本。但是它不会删除长者。