天朝局域网内go get的正确姿势
前言
Golang获取包最简单的方法就是直接执行go get xxxx
,与此同时,这也是Golang被诟病很多的一点 非常不利于版本管理 个人的工作环境可能会因为引包不对而被污染 所以后来就有了govendor
gopm
等关于go的包管理器 。当然 这不是今天要说的内容。今天要说的是关于墙的解决方案 .很多Golang开发者大多会遇到这个问题:go get 包的时候会卡死 或是直接超时 因为我们伟大的防火墙的存在 很多包都是不能直接获取的。。然后 有人会用Shdowsocks
+ proxychains/proxychains-ng
作为Terminal xx 的工具 配置好之后 经过测试发现proxychains能用 但是go get 还是卡死了。这个事情已经有中国开发者在Github上对Go Team提问过了,Go Team的反馈是不能单单为了中国改变go get的实现模式,详情issue请戳这里 。
polipo
关于polipo
Polipo 可以把Socks Proxy -> HTTP Proxy
0x00: 安装&&配置
- Ubuntu及其衍生版下可以使用
sudo apt-get install polipo
- 在
/etc/polipo
下找到config的配置文件 ,配置如下:
|
|
然后 执行
sudo polipo -c /path/to/polipo/config
(/path/to 为polipo父目录)开启 Http Proxy
sudo polipo socksParentProxy=localhost:1080
此步建议在第二步做 :)。
0x01 测试 使用
- 加上http(s)_ proxy来获取包
http(s)_proxy=http://127.0.0.1:8123 go get -v -u github.com/xxx/xxx
- OR123export http_proxy=http://127.0.0.1:8123export https_proxy=$http_proxygo get -u -v github.com/xxx/xxx/
不怎么优雅的姿势
从国内的镜像站(例如 gopm.io)下下来之后 再通过
go install
来安装包 但是这样会丢失git记录 不方便包的更新。直接git clone 到本地.
通过
Shadowsocks
+proxychains4
+govendor
的方式来获取包因为用到的东西 比较麻烦 所以也不是怎么优雅吧 但是强烈建议用类似govendor
的包管理工具来进行golang package的管理!