解决go get无法获取golang.org的包的问题 2016-04-21 06:23:41 ## 最新解决方案 export GOPROXY=https://goproxy.cn ## 以下为之前的旧方案,可忽略 由于国内被墙导致无法获取。所以go get获取包的时候会出现超时错误,就像我这次碰到的: ``` ➜ vishnu git:(master) ✗ go get github.com/kataras/iris package golang.org/x/sys/unix: unrecognized import path "golang.org/x/sys/unix" (https fetch: Get https://golang.org/x/sys/unix?go-get=1: dial tcp 103.7.200.79:443: i/o timeout) ``` ### 解决方案 你首先得有个能够(尼)翻(玛)墙的代理地址,我这里用的是Lantern,他的http代理端口是51708。 go get设置代理,需要添加http_proxy等环境变量 修改`~/.bashrc`添加以下配置后,在`source ~/.bashrc`就可以了: ``` export http_proxy=http://localhost:51708 export https_proxy=$http_proxy export ftp_proxy=$http_proxy export rsync_proxy=$http_proxy export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com" ``` 此外git也需要配置代理: ``` git config --global https.proxy http://127.0.0.1:51708 git config --global https.proxy https://127.0.0.1:51708 ``` 如果要取消代理设置,则执行 ``` git config --global --unset http.proxy git config --global --unset https.proxy ``` 查看已经设置的值:`git config http.proxy` ### 关于go get 参数说明: ``` -d 只下载不安装 -f 只有在你包含了-u参数的时候才有效,不让-u去验证import中的每一个都已经获取了,这对于本地fork的包特别有用 -fix 在获取源码之后先运行fix,然后再去做其他的事情 -t 同时也下载需要为运行测试所需要的包 -u 强制使用网络去更新包和它的依赖包 -v 显示执行的命令 ``` 我们使用go get下载包时,最好使用-u -v参数,-v可以参看下载的其他依赖包,便于我们定位是哪个包出的问题,如: ``` go get -v -u github.com/kataras/iris ``` 非特殊说明,均为原创,原创文章,未经允许谢绝转载。 原始链接:解决go get无法获取golang.org的包的问题 赏 Prev Mac下使用spf13-vim增强vim功能 Next 解决SBT运行时提示java.lang.OutOfMemoryError: PermGen space的问题