国内由于GFW和网速比较慢的原因,部分网站无法直接访问。但是golang学习者从部分技术网站下载代码进行学习又是必不可少的。
1 问题描述
作为golang开发者,当执行go get
,go install
,go mod
命令时,会自动下载相应的代码包或者依赖包。
例如,执行go get golang.org/x/net
,经常下载失败。
2 问题解决
设置GOPROXY为国内大厂的golang代码镜像代理。go module
包依赖管理工具在golang 1.11+支持,并添加了GOPROXY
环境变量。
如果设置了GOPROXY
环境变量,下载源代码时会通过GOPROXY
设置的代理地址下载。
如果Golang的版本golang1.13+,可以设置GOPRIVATE
环境变量来控制直接走本地的私有仓库和依赖(一般是公司内部的golang私有仓库),而无需通过 proxy 来拉取。
3 设置方法
- Linux, MacOS
- 当前terminal生效
# 启用Go module功能
export GO111MODULE=on
# 配置GOPROXY环境变量 export GOPROXY={proxy_url}
export GOPROXY=https://goproxy.io,direct
# Set environment variable allow bypassing the proxy for specified repos (optional if Go version >=1.13)
export GOPRIVATE=git.mycompany.com,github.com/my/private
或者:
$ echo "export GO111MODULE=on" >> ~/.profile
$ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
$ source ~/.profile
- 当前用户生效
把以上命令加入到~/.bashrc
,~/.bash_profile
,~/.bash_profile
,~/.bash_login
,~/.profile
其中一个文件中,重启系统后对当前用户生效。 - 全局生效
把以上命令加入到/etc/profile
,/etc/bashrc
其中一个文件中,重启系统后对当前用户生效。
-
Windows
在PowerShell中运行以下命令:
# 启用go module功能
$env:GO111MODULE="on"
# 配置GOPROXY环境变量$env:GOPROXY="{proxy_url}"
$env:GOPROXY = "https://goproxy.io,direct"
# Set environment variable allow bypassing the proxy for specified repos (optional if Go version >=1.13)
$env:GOPRIVATE = "git.mycompany.com,github.com/my/private"
4 可用的代理
-
Linux or macOS
Bash
# Set the GOPROXY environment variable
export GOPROXY=https://goproxy.io,direct
# Set environment variable allow bypassing the proxy for specified repos (optional if Go version >=1.13)
export GOPRIVATE=git.mycompany.com,github.com/my/private
-
Windows
PowerShell
# Set the GOPROXY environment variable
$env:GOPROXY = "https://goproxy.io,direct"
# Set environment variable allow bypassing the proxy for specified repos (optional if Go version >=1.13)
$env:GOPRIVATE = "git.mycompany.com,github.com/my/private"
Goproxy.cn - 七牛云
设置方法见3 设置方法。
GOPROXY的URL为:https://goproxy.cn
。阿里云Go Module代理服务
设置方法见3 设置方法。
GOPROXY的URL为:https://mirrors.aliyun.com/goproxy/
。