go 国内加速:解决 gosumdb sum.golang.org 连接超时 | go 技术论坛-江南app体育官方入口
问题
默认 gosumdb 的值为:
sum.golang.org
使用 go get
或者 go install
命令时,即使我们设置了 goproxy
加速镜像,偶尔还是会遇到:
dlv: failed to install dlv(github.com/go-delve/delve/cmd/dlv@latest): error: command failed: /usr/local/bin/go install -v github.com/go-delve/delve/cmd/dlv@latest
go: downloading github.com/go-delve/delve v1.8.2
go: github.com/go-delve/delve/cmd/dlv@latest: github.com/go-delve/delve@v1.8.2: verifying module: github.com/go-delve/delve@v1.8.2: get "https://sum.golang.org/lookup/github.com/go-delve/[email protected]": dial tcp 142.251.43.17:443: i/o timeout
原因
首先需要弄懂,执行以上提到的两个命令时,除了会从 goproxy
下载压缩包,还会调用 gosumdb
来检测文件哈希是否正确。此乃 go module 提供的安全机制,能有效防止代码被篡改。
因国内访问外网不稳定 sum.golang.org
连接超时了,导致无法完成整个下载流程。
解决
解决方法同修改 goproxy 一样,我们设置一个国内能访问到的 gosumdb 即可。
mac 或者 linux 下:
go env -w gosumdb=sum.golang.google.cn
windows 下:
$env:goproxy="sum.golang.google.cn"