转到模块:校验和不匹配

时间:2019-01-10 17:15:51

标签: go go-modules

我最近开始在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删除依赖项,但是似乎没有任何方法可以解决此问题。

有人知道如何解决此问题吗?

6 个答案:

答案 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)

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

答案 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

哪个:

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

P.S。:{{1}}-仅删除未使用的软件包并添加新版本。但是它不会删除长者