如何为go get命令指定DNS以拉取公司GitLab内部依赖包
本地Go get使用指定DNS拉取内部私有依赖的解决方案
根因说明
报错有两个核心诱因:
- Go 1.13默认会对所有依赖包请求公共校验服务器
sum.golang.org做哈希校验,内部私有包不在公共校验库中,会直接返回410错误 - 你的DNS请求被劫持到了公共DNS
8.8.8.8,无法解析公司内部域名
具体操作步骤
- 第一步:配置Go跳过私有域名的公共校验与代理
执行以下命令配置环境变量,将公司域名加入私有包列表,不走公共校验和代理:go env -w GOPRIVATE=our-domain.com go env -w GONOSUMDB=our-domain.com go env -w GONOPROXY=our-domain.com - 第二步:确认并修复本地DNS生效问题
- 先查看当前终端生效的DNS列表,确认公司DNS
1.2.3.4优先级最高:scutil --dns | grep nameserver - 如果公司DNS不在列表最前面,刷新MacOS DNS缓存:
sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder - 如果你本地开了代理工具,大概率是代理强制劫持DNS到公共服务器,需要把
our-domain.com加入代理的直连/绕过列表,或者临时关闭代理后再测试。
- 先查看当前终端生效的DNS列表,确认公司DNS
- 第三步:兜底方案
如果DNS配置始终不生效,可以直接修改本地hosts文件强制绑定域名IP,绕开DNS解析:
也可以配置git走SSH协议拉取代码,绕开HTTPS的DNS校验:sudo echo "你公司域名对应的实际IP our-domain.com" >> /etc/hostsgit config --global url."git@our-domain.com:".insteadOf "https://our-domain.com/"
内容的提问来源于stack exchange,提问作者Izbassar Tolegen
相关产品推荐
相关产品推荐

