這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
國內的Go開發已然蔚然成風,但是Go開發人員比較痛苦的是,golang.org網站以及其它的一些相關的開發網站被GFW屏蔽了。下載Go開發包海容易些,國內有一些鏡像網站,或者通過一些代理也能訪問,但是下載一些開發庫的時候,這些庫可能直接或者間接引用了 `golang.org/x/...`等依賴庫, 通過go get
命令確沒有辦法下載下來。
我原先在Comcast,這是一家外企,在國內有vpn可以直接存取這些網站,所以以前沒有覺得go get
是一個問題,看到大家被GFW弄的焦頭爛額的時候也沒覺得是一件大事情,現在換到國內的互連網企業,切切實實的感覺到GFW的威力。首先是google.com, golang.org等網站被屏蔽掉了,其次 go get
一些庫如golangorg/x/net
失敗。
總得想些辦法吧。如果有自己的VPN的話,應該比較好的解決,我沒有,不過我比較熟悉的是shadowsocks,所以基於shadowsocks想了一些辦法,總算能正常的下載了,本文紀錄一下這曲折的過程。
shadowsocks的安裝和使用我就不說了,請自行搜尋。Shadowsocks雖然能訪問一些屏蔽的網站比如golang.org,但是它基於socks5協議,對於go get
來說,依然不可用。
下一步就是想辦法將socks5代理轉為http代理了。
一個方法如 mac下宿主機和docker內go get代理設定一文中介紹的privoxy,不過我沒有試成功。
另一個方法是實用 cow, 這是shadowsocks-go作者的另一個開發項目,根據項目介紹很容易的配置,可以在本機啟動一個http代理,以shadowsocks為二級代理。
12 |
listen = http://127.0.0.1:7777proxy = socks5://127.0.0.1:1080 |
然後設定環境變數,就可以go get
被屏蔽的庫了。
12 |
export http_proxy=http://127.0.0.1:7777export https_proxy=http://127.0.0.1:7777 |
如果沒有代理,而你又需要golang.org/x/...
的包,你可以手工在你的GOPATH下建立這些目錄,然後 git clone github.com/golang/xxx
相應的目錄即可(xxx替換成泥需要的庫,比如net)。