缘起
google被墙,code.google.com 上的 golang package何以下载?
解决办法
办法1: 走国外的VPN
不做详细介绍
办法2: 走代理
说明:
go get 本身没有设置代理的功能; go get 本身也没有做太多事情,主要还是依赖hg、git工具来下载代码的;
- github 代理设置:
|
git config --global http.proxy http://proxy.com:1234 git config --global https.proxy http://proxy.com:1234 |
如果出现证书校验问题,可以做如下设置:
|
git config --global http.sslverify false |
也可以通过设置环境变量搞定:
|
export GIT_SSL_NO_VERIFY=true |
- 关于hg的代理设置:(hg在linux上是python脚本,在windows上是二进制程序)
- linux 环境上设置环境变量http_proxy=proxy_host:proxy_port (定义在 ~/.hg/hgrc 中似乎没有生效, 查了下,命令先参考 ~/.hgrc 文件,再参考当前目录下的 .hg/hgrc 文件)
linux上关于hg命令的安装:
- windows上: hg help config 详细介绍了 hg的配置文件的路径及格式,设置代理方式只需在配置文件中添加:
|
[http_proxy] host=proxy_host:proxy_port |
- 经过了上述设置,似乎还是不行,因为 go get 确实有时候在执行hg、git命令之前执行了一些(个?)http请求,这些http请求是通过go直接实现的,好在go默认是支持http_proxy(大写也可以HTTP_PROXY)环境变量的,可以直接如下设置:
|
export http_proxy=http://host:port |
当然如果代理是https,可以:
|
export http_proxy=https://host:port |
注意:http:// (或 https://) 是需要的,笔者学艺不精,曾经一直写作 ( export http_proxy=host:port ) ,应该是有软件支持这样写法,现在这么些总不生效,还以为go不支持这个环境变量,再加上刚接触go时,这部分代码也没看太明白,走了不少弯路,现在回头来看,确实go是支持该环境变量的
http.DefaultClient 默认使用的是 DefaultTransport 而 DefaultTransport 默认参考: ProxyFromEnvironment; 但是该关系有些隐晦,不是一下就能看出来的
- 或许还是无法使用go get ,因为 go get 确实有时候在执行hg、git命令之前执行了一些(个?)http请求的,解决办法: 直接使用hg、git命令来clone到本地,如:
|
hg clone https://code.google.com/p/go-priority-queue |