如何在长城后面go get一些库

smallnest · · 3038 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

国内的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为二级代理。

1
2
listen = http://127.0.0.1:7777
proxy = socks5://127.0.0.1:1080

然后设置环境变量,就可以go get被屏蔽的库了。

1
2
export http_proxy=http://127.0.0.1:7777
export https_proxy=http://127.0.0.1:7777

如果没有代理,而你又需要golang.org/x/...的包,你可以手工在你的GOPATH下创建这些目录,然后 git clone github.com/golang/xxx相应的目录即可(xxx替换成泥需要的库,比如net)。


有疑问加站长微信联系(非本文作者)

本文来自:鸟窝

感谢作者:smallnest

查看原文:如何在长城后面go get一些库

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3038 次点击  ∙  1 赞  
加入收藏 微博
1 回复  |  直到 1999-12-31 16:00:00
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传