golang编译时网络问题ubuntu怎么解决
导读:Ubuntu 下 Go 编译时网络问题的排查与解决 一 快速修复 设置 Go 模块代理 启用模块并配置国内代理(推荐): go env -w GO111MODULE=on go env -w GOPROXY=https://goprox...
Ubuntu 下 Go 编译时网络问题的排查与解决
一 快速修复 设置 Go 模块代理
- 启用模块并配置国内代理(推荐):
- go env -w GO111MODULE=on
- go env -w GOPROXY=https://goproxy.cn,direct
- 若此前设置过系统级环境变量导致“go env -w 不覆盖”的提示,需同步修改系统环境或统一写入用户配置文件(如 ~/.bashrc、~/.profile、/etc/profile),然后执行 source 使其生效。
- 验证:go env | grep -E ‘GO111MODULE|GOPROXY’ 应显示已启用模块与代理地址。
二 公司或校园网络 配置 HTTP 代理
- 若处于需要 HTTP/HTTPS 代理的网络,设置环境变量(临时生效):
- export http_proxy=http://your.proxy.server:port
- export https_proxy=https://your.proxy.server:port
- 可选:export NO_PROXY=localhost,127.0.0.1,.yourdomain.com
- 永久生效:将上述行追加到 ~/.bashrc 或 ~/.profile,并执行 source ~/.bashrc(或 source ~/.profile)。
- 注意:Go 的 GOPROXY 与系统的 http_proxy/https_proxy 是两套机制,二者可同时配置,分别生效于模块代理与底层网络请求。
三 DNS 与连通性排查
- 检查能否解析并连通模块域名:
- curl -v https://google.golang.org/protobuf
- 或 dig google.golang.org +short 查看解析 IP
- 若 DNS 解析慢或不稳定,可临时更换为公共 DNS(如 8.8.8.8):
- echo “nameserver 8.8.8.8” | sudo tee /etc/resolv.conf
- 若仍超时,检查防火墙/安全组策略是否放行 443 端口的出站连接。
四 仍失败时的可选方案
- 关闭校验和数据库(仅在确认安全可信的网络环境下使用,例如 CI 离线场景):
- go env -w GOSUMDB=off
- 针对个别模块单独拉取(规避整体拉取卡死):
- go get google.golang.org/protobuf@v1.30.0
- 极少数情况下,某些域名直连受限可尝试修改 /etc/hosts 做临时解析映射(地址会变,谨慎使用)。
五 一键最小可用配置示例
- 交互式终端执行:
- go env -w GO111MODULE=on
- go env -w GOPROXY=https://goproxy.cn,direct
- echo ‘export GOPROXY=https://goproxy.cn,direct’ > > ~/.bashrc & & source ~/.bashrc
- 再次构建:go build 或 go run,通常即可恢复依赖拉取与编译。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: golang编译时网络问题ubuntu怎么解决
本文地址: https://pptw.com/jishu/771019.html
