跳到主要内容

解决一次 Go 依赖下载错误

发现一个方便的 Go 二进制包分发工具 goreleaser, 打算安装体验一下, 在安装过程中遇到一些依赖问题, 于是顺手解决

安装 goreleaser

go install github.com/goreleaser/goreleaser@latest

错误 1

package io/fs is not in GOROOT
  • 可能原因: go版本过低, 在 go1.14 版本出现上述错误
  • 解决: 升级到 go1.16 后错误消失

错误 2

SECURITY ERROR
This download does NOT match the one reported by the checksum server.
The bits may have been replaced on the origin server, or an attacker may
have intercepted the download attempt.

For more information, see 'go help module-auth'.
  • 可能原因: 下载的依赖需要验证校验和
  • 解决 1: 简单的方法是直接关闭安全校验, 关闭后 Go 不会对下载的依赖包做安全校验,存在一定的安全隐患
go env -w GOSUMDB=off
  • 解决 2: 之所以无法安全校验是因为 Go 默认的校验服务器为 sum.golang.org, 国内可能会因为网络问题无法访问, 可以设置代理服务器解决这个问题
go env -w GOSUMDB="gosum.io+ce6e7565+AY5qEHUk/qmHc5btzW45JVoENfazw8LielDsaI+lEbq6"

使用 goreleaser

尝试使用 goreleaser, 确认是否安装成功

goreleaser init

参考