10月 292014
 

缘起

google被墙,code.google.com 上的 golang package何以下载?

解决办法

办法1: 走国外的VPN

不做详细介绍

办法2: 走代理

说明:

go get 本身没有设置代理的功能; go get 本身也没有做太多事情,主要还是依赖hg、git工具来下载代码的;

  1. github 代理设置:

    如果出现证书校验问题,可以做如下设置:

    也可以通过设置环境变量搞定:

     
  2. 关于hg的代理设置:(hg在linux上是python脚本,在windows上是二进制程序)
    1. linux 环境上设置环境变量http_proxy=proxy_host:proxy_port      (定义在 ~/.hg/hgrc 中似乎没有生效, 查了下,命令先参考 ~/.hgrc 文件,再参考当前目录下的 .hg/hgrc 文件)
      linux上关于hg命令的安装:

       
    2. windows上: hg help config  详细介绍了 hg的配置文件的路径及格式,设置代理方式只需在配置文件中添加:
  3. 经过了上述设置,似乎还是不行,因为 go get 确实有时候在执行hg、git命令之前执行了一些(个?)http请求,这些http请求是通过go直接实现的,好在go默认是支持http_proxy(大写也可以HTTP_PROXY)环境变量的,可以直接如下设置:

    当然如果代理是https,可以:

    注意:http:// (或 https://) 是需要的,笔者学艺不精,曾经一直写作 ( export http_proxy=host:port ) ,应该是有软件支持这样写法,现在这么些总不生效,还以为go不支持这个环境变量,再加上刚接触go时,这部分代码也没看太明白,走了不少弯路,现在回头来看,确实go是支持该环境变量的

    http.DefaultClient 默认使用的是 DefaultTransport 而 DefaultTransport 默认参考:  ProxyFromEnvironment; 但是该关系有些隐晦,不是一下就能看出来的

  4. 或许还是无法使用go get ,因为 go get 确实有时候在执行hg、git命令之前执行了一些(个?)http请求的,解决办法: 直接使用hg、git命令来clone到本地,如:

     

 

 Posted by at 下午 3:29

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

(required)

(required)

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据