go mod 校验和不匹配

标签 go go-modules

到目前为止,我是团队中唯一可以为以下软件包复制此问题的开发人员。

要纠正我尝试过的不匹配:

  • 清理 -modcache
  • 删除 .mod .sum 文件中的相关条目
  • 完全删除 .mod.sum 文件
  • 直接彻底删除 vendor
  • 卸载 golang 并清除我机器上的所有内容
  • 重新安装最新版本的 go
> go get go.temporal.io/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="235047486355120d12130d13" rel="noreferrer noopener nofollow">[email protected]</a>
go: downloading go.temporal.io/sdk v1.10.0
go get: go.temporal.io/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="fc8f9897bc8acdd2cdccd2cc" rel="noreferrer noopener nofollow">[email protected]</a>: verifying module: checksum mismatch
    downloaded: h1:t0t/mtBxetBZUhvLB2mE2g7lgZcJDRAf1OPkV63+CfM=
    sum.golang.org: h1:JfzXWB+/EcDcC6poz6/k0dc57qas+Es1LMcIXEvP8IA=

我可以安装其他版本,但不能安装 v1.10.0。有人对如何解决这个问题有任何建议或想法吗?

编辑:

作为解决方法,我已将此包添加到 GOPRIVATE,这会将其排除在校验和不匹配之外。

export GOPRIVATE="go.temporal.io"

最佳答案

通常,当模块的维护者尝试将现有标签从一个提交移动到另一个提交时,就会发生这种情况。这是不允许的:Go checksum database第一次遇到新的模块版本时会存储一个永久的、不可撤销的校验和,并且该校验和用于验证该模块在之前的下载中没有被篡改。

如果给定版本存在严重问题,该版本可能是 retracted并发布了新补丁。但是,新补丁必须有自己唯一的版本(通常是相同版本补丁号增加1)。

此处的正确修复方法是放弃 v1.10.0 并让上游标记新版本。

关于go mod 校验和不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69588927/

相关文章:

go - net.Dial 在编译目标 wasm 时总是返回错误

go - time.Parse in Go 具有不同的小数秒长度

go - 尝试使用本地子模块时出现问题

go - 如何使用 go modules 删除已安装的包

go - 如何导入非 go 目录(例如 : C src/) with go modules?

go - 为什么 go-get 尝试从远程位置下载本地代码?

go - 如何为 pq 驱动程序准备一个带有动态表名的 INSERT 语句

random - Go - 关于 crypto/rand 的例子

ssl - asn1 go(客户端证书授权)

go - 无法构建具有外部模块本地副本的项目