[golang] go get无法安装官方软件包

作为一个小白,困惑了快半个小时,一直以为是自己的环境搭建有问题。

后来我终于知道了,原来golang.org与godoc.org是墙外的网站。

所以,装软件的时候,会有下面的错误

/home/tong/go/src/local/test [tong@TStation] [12:24]
> proxychains  go get -v golang.org/x/tools/cmd/guru
[proxychains] config file found: /etc/proxychains.conf
[proxychains] preloading /usr/lib/libproxychains4.so
package golang.org/x/tools/cmd/guru: unrecognized import path "golang.org/x/tools/cmd/guru" (https fetch: Get https://golang.org/x/tools/cmd/guru?go-get=1: dial tcp 224.0.0.1:443: connect: network is unreachable)

> go get -v golang.org/x/database/sql
package golang.org/x/database/sql: unrecognized import path "golang.org/x/database/sql" (https fetch: Get https://golang.org/x/database/sql?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

使用浏览器的时候,我们有办法访问它。

在命令行下 go get的时候,就需要命令行下的方法,

我一般使用 proxychain工具,它可以使它的子进程全部走它的网络出口,但是不知道为什么go get却不行。

这时候,其实还有更简单的方式,就是用环境变量,如下:

https_proxy=socks5://127.0.0.1:1080  go get -v golang.org/x/tools/cmd/guru

对应的其他大同小异的,还有:

# set http proxy
export http_proxy=http://127.0.0.1:8080
# set http proxy with user and password
export http_proxy=http://USERNAME:PASSWORD@127.0.0.1:8080
# set http proxy with user and password (with special characters)
export http_proxy=http://`urlencode 'USERNAME'`:`urlencode 'PASSWORD'`@127.0.0.1:8080

# set socks proxy (local DNS)
export http_proxy=socks5://127.0.0.1:1080
# set socks proxy (remote DNS)
export http_proxy=socks5h://127.0.0.1:1080