國內由于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/
。