這篇文章主要講解了“怎么快速解決go get golang.org/x包不成功的問題”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么快速解決go get golang.org/x包不成功的問題”吧!
當我們使用 go get
、go install
、go mod
等命令時,會自動下載相應的包或依賴包。但由于眾所周知的原因,類似于 golang.org/x/...
的包會出現下載失敗的情況。如下所示:
$ go get -u golang.org/x/sys go get golang.org/x/sys: unrecognized import path "golang.org/x/sys" (https fetch: Get https://golang.org/x/sys?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
那我們該如何解決問題呢?畢竟還要制造 bug 的嘛~
我們常見的 golang.org/x/...
包,一般在 GitHub 上都有官方的鏡像倉庫對應。比如 golang.org/x/text
對應 github.com/golang/text
。所以,我們可以手動下載或 clone 對應的 GitHub 倉庫到指定的目錄下。
mkdir $GOPATH/src/golang.org/x cd $GOPATH/src/golang.org/x git clone git@github.com:golang/text.git rm -rf text/.git
當如果需要指定版本的時候,該方法就無解了,因為 GitHub 上的鏡像倉庫多數都沒有 tag。并且,手動嘛,程序員怎么能干呢,尤其是依賴的依賴,太多了。
如果你有代理,那么可以設置對應的環境變量:
export http_proxy=http://proxyAddress:port export https_proxy=http://proxyAddress:port
或者,直接用 all_proxy
:
export all_proxy=http://proxyAddress:port
從 Go 1.11 版本開始,新增支持了 go modules
用于解決包依賴管理問題。該工具提供了 replace
,就是為了解決包的別名問題,也能替我們解決 golang.org/x
無法下載的的問題。
go module
被集成到原生的 go mod
命令中,但是如果你的代碼庫在 $GOPATH
中,module
功能是默認不會開啟的,想要開啟也非常簡單,通過一個環境變量即可開啟 export GO111MODULE=on
。
以下為參考示例:
module example.com/hello require ( golang.org/x/text v0.3.0 ) replace ( golang.org/x/text => github.com/golang/text v0.3.0 )
類似的還有 glide、gopm 等這類第三方包管理工具,都不同方式的解決方案提供給我們。
終于到了本文的終極大殺器 —— GOPROXY。
我們知道從 Go 1.11
版本開始,官方支持了 go module
包依賴管理工具。
其實還新增了 GOPROXY
環境變量。如果設置了該變量,下載源代碼時將會通過這個環境變量設置的代理地址,而不再是以前的直接從代碼庫下載。這無疑對我等無法科學上網的開發良民來說是最大的福音。
更可喜的是,goproxy.io 這個開源項目幫我們實現好了我們想要的。該項目允許開發者一鍵構建自己的 GOPROXY
代理服務。同時,也提供了公用的代理服務 https://goproxy.io
,我們只需設置該環境變量即可正常下載被墻的源碼包了:
export GOPROXY=https://goproxy.io
不過,需要依賴于 go module
功能??赏ㄟ^ export GO111MODULE=on
開啟 MODULE。
如果項目不在 GOPATH
中,則無法使用 go get ...
,但可以使用 go mod ...
相關命令。
也可以通過置空這個環境變量來關閉,export GOPROXY=
。
對于 Windows 用戶,可以在 PowerShell
中設置:
$env:GOPROXY = "https://goproxy.io"
最后,我們當然推薦使用 GOPROXY
這個環境變量的解決方式,前提是 Go version >= 1.11。
感謝各位的閱讀,以上就是“怎么快速解決go get golang.org/x包不成功的問題”的內容了,經過本文的學習后,相信大家對怎么快速解決go get golang.org/x包不成功的問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。