go 编译超时解决
转载请注明出处:
在编译go项目时,遇到依赖下载超时,异常输出如下:
CGO_ENABLED=0 GOOS=linux GO111MODULE=on go build -a -ldflags '-extldflags "-static"' -o ../../bin/gobmp ./gobmp.go
go: google.golang.org/protobuf@v1.30.0: unrecognized import path "google.golang.org/protobuf": https fetch: Get "https://google.golang.org/protobuf?go-get=1": dial tcp 142.251.211.241:443: i/o timeout
go: google.golang.org/protobuf@v1.30.0: unrecognized import path "google.golang.org/protobuf": https fetch: Get "https://google.golang.org/protobuf?go-get=1": dial tcp 142.251.211.241:443: i/o timeout
Go 在尝试访问模块 google.golang.org/protobuf
的时候出现了超时。这个问题通常可以归因于以下几个因素:网络连接问题、DNS 解析问题、被防火墙阻挡、或者其他网络配置相关的问题。
问题定位
1.网络问题:
确保可以访问 google.golang.org
。尝试使用网络工具检查连接:
ping google.golang.org
或者
curl -v https://google.golang.org/protobuf
如果这些命令返回错误,那么网络连接本身可能存在问题。
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
然后再尝试 build。
3.防火墙设置
确保没有防火墙或网络策略阻止访问这些地址。
如果以上方法无法解决问题,下面是一些可以使用的 Go 代理(这些代理可以帮助你在访问 Go 模块时使用不同的网络路径):
export GOPROXY=https://goproxy.cn
Goproxy.io
export GOPROXY=https://goproxy.io,direct
Golang Proxy(Google 官方代理):
export GOPROXY=https://proxy.golang.org,direct
其他公共代理:
可以这样设置:
export GOPROXY=https://mirrors.aliyun.com/goproxy,direct
禁用 checksum 数据库(如果你无法访问官方代理):
export GOSUMDB=off
手动获取模块:
go get google.golang.org/protobuf@v1.30.0