我最近开始使用 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
。
- 删除 go.sum : rm go.sum
- 重新生成 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