國(guó)內(nèi)由于GFW和網(wǎng)速比較慢的原因封恰,部分網(wǎng)站無(wú)法直接訪問。但是golang學(xué)習(xí)者從部分技術(shù)網(wǎng)站下載代碼進(jìn)行學(xué)習(xí)又是必不可少的吗跋。
1 問題描述
作為golang開發(fā)者床牧,當(dāng)執(zhí)行go get
彭谁,go install
肛捍,go mod
命令時(shí),會(huì)自動(dòng)下載相應(yīng)的代碼包或者依賴包洞坑。
例如盲链,執(zhí)行go get golang.org/x/net
,經(jīng)常下載失敗迟杂。
2 問題解決
設(shè)置GOPROXY為國(guó)內(nèi)大廠的golang代碼鏡像代理刽沾。go module
包依賴管理工具在golang 1.11+支持,并添加了GOPROXY
環(huán)境變量排拷。
如果設(shè)置了GOPROXY
環(huán)境變量侧漓,下載源代碼時(shí)會(huì)通過GOPROXY
設(shè)置的代理地址下載。
如果Golang的版本golang1.13+监氢,可以設(shè)置GOPRIVATE
環(huán)境變量來(lái)控制直接走本地的私有倉(cāng)庫(kù)和依賴(一般是公司內(nèi)部的golang私有倉(cāng)庫(kù))布蔗,而無(wú)需通過 proxy 來(lái)拉取。
3 設(shè)置方法
- Linux, MacOS
- 當(dāng)前terminal生效
# 啟用Go module功能
export GO111MODULE=on
# 配置GOPROXY環(huán)境變量 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
- 當(dāng)前用戶生效
把以上命令加入到~/.bashrc
浪腐,~/.bash_profile
纵揍,~/.bash_profile
,~/.bash_login
议街,~/.profile
其中一個(gè)文件中泽谨,重啟系統(tǒng)后對(duì)當(dāng)前用戶生效。 - 全局生效
把以上命令加入到/etc/profile
特漩,/etc/bashrc
其中一個(gè)文件中吧雹,重啟系統(tǒng)后對(duì)當(dāng)前用戶生效。
-
Windows
在PowerShell中運(yùn)行以下命令:
# 啟用go module功能
$env:GO111MODULE="on"
# 配置GOPROXY環(huán)境變量$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 - 七牛云
設(shè)置方法見3 設(shè)置方法拾稳。
GOPROXY的URL為:https://goproxy.cn
吮炕。阿里云Go Module代理服務(wù)
設(shè)置方法見3 設(shè)置方法腊脱。
GOPROXY的URL為:https://mirrors.aliyun.com/goproxy/
访得。