go语言,安装包fetch error 问题解决方案

最近需要安装grequests,出现了下面的error

[fdf@zxmrlc ~]$ go get github.com/levigross/grequests
package golang.org/x/net/publicsuffix: unrecognized import path "golang.org/x/net/publicsuffix" (https fetch: Get https://golang.org/x/net/publicsuffix?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
[fdf@zxmrlc ~]$ go get -u -v github.com/levigross/grequests
github.com/levigross/grequests (download)
github.com/google/go-querystring (download)
Fetching https://golang.org/x/net/publicsuffix?go-get=1
https fetch failed: Get https://golang.org/x/net/publicsuffix?go-get=1: dial tcp 216.239.37.1:443: i/o timeout
package golang.org/x/net/publicsuffix: unrecognized import path "golang.org/x/net/publicsuffix" (https fetch: Get https://golang.org/x/net/publicsuffix?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

一般解决方案

1.FQ(科学上网)。

2.安装net包

golang 在 github 上建立了一个镜像库,如 https://github.com/golang/net 即是 https://golang.org/x/net 的镜像库

获取 golang.org/x/net 包,其实只需要以下步骤:

mkdir -p $GOPATH/src/golang.org/x

cd $GOPATH/src/golang.org/x

git clone https://github.com/golang/net.git

很早之前已经安装了net包但是依旧出现问题

[fdf@zxmrlc ~]$ echo $GOPATH

[fdf@zxmrlc ~]$ echo $GOROOT

[fdf@zxmrlc ~]$ go env | grep GOPATH
GOPATH="/home/fdf/go"

查看history,出现问题的情况在于 环境变量的加载

gopath缺失,默认go env gopath为~/go,找不到net包。

开始以为:

图形界面启动终端操作是non-login shell,正常。

ssh 远程登录时是login shell,出现问题。

但是发现都会读取配置文件。最终发现在ssh登录用户的问题。

ssh用的root用户登录,然后gopath在非root用户环境变量配置文件。导致出现的gopath缺失。

解决方案 (vim 只是确认GOPATH在环境变量)

或者将GOPATH添加进全局环境变量配置文件

[fdf@zxmrlc ~]$ rm -rf go
[fdf@zxmrlc ~]$ vim ~/.bash_profile
[fdf@zxmrlc ~]$ source ~/.bash_profile
[fdf@zxmrlc ~]$ go env | grep GOPATH
GOPATH="/home/fdf/golang"
[fdf@zxmrlc ~]$ echo $GOPATH
/home/fdf/golang
[fdf@zxmrlc ~]$ go get -u github.com/levigross/grequests