go modules 410 Gone

3,513 阅读1分钟

有时候,发布 go 库会发现在其他项目中无法引用,产生 410 Gone 错误。

这是由于你的 go 库声明为 go 1.12 格式,此时将没有 SUMDB 校验信息,因而在一个 go 1.13 的项目中引用这样的旧的库格式时会产生校验错误,进而报错为 410 Gone。

例如:

image-20200103114210261

解决的办法有很多。

对于使用该旧格式库的人来说,以下两个办法都能帮助你顺利下载库和完成引用:

export GONOSUMDB="github.com/hedzr/errors,$GONOSUMDB"
# Or
export GOSUMDB=off

对于该库的拥有者而言,下面的办法是正确的处理方案,可以一劳永逸地解决问题:在 go.mod 中修改库宣告的版本格式为 1.13。例如:

module github.com/hedzr/errors

go 1.13  // go 1.12

对于库作者而言,如果还有任何发布的库的 go.mod 中包含 go 1.12 宣告的,都应该立即更新库为新版本本修正这个宣告为 go 1.13,以避免他人遇到麻烦。