在使用go get安装第三方包时,由于文化自信的原因,可能回出现类似下面的错误
go get github.com/kardianos/govendor: module github.com/kardianos/govendor: Get https://proxy.golang.org/github.com/kardianos/govendor/@v/list: dial tcp 172.217.160.113:443: connectex: A connection attempt failed because the connected party did not properly respond
after a period of time, or established connection failed because connected host has failed to respond.
解决上述问题主要有两个办法:
一、从github下载源码安装
既然无法直接下载安装,那可以先从github将源码下载下来,然后在本地编译。麻烦的一点是需要在本地一层一层创建跟第三方包相同的包路径。大概方式如下(示例);
但是这种方法有个问题,如果在编译这个第三方时又用到了其他本地没有的第三方包,那么Go还是会通过go get安装这些第三方包,那么这些第三方包依然无法下载,导致编译失败。
> mkdir -p $GOPATH/src/golang.org/x/ > cd $GOPATH/src/golang.org/x/ > git clone https://github.com/golang/crypto.git crypto > go install crypto
二、配置GOPROXY
第二种方法比较简单,有点一劳永逸的意思。可以使用第二种方法原因是,从 Go 1.11 版本开始,官方支持了 go module 包依赖管理工具,新增了 GOPROXY 环境变量。如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。所以本方法要求Go Version >= 1.11,如果你的Go Version >= 1.13,那么你还可以使用GOPRIVATE环境变量。
国内可选择的Go proxy还算多,有七牛云 - Goproxy.cn,GOPROXY.IO - A Global Proxy for Go Modules,阿里云Go Module代理服务 (aliyun.com)。
配置方法可以详细见各家官网,下面已goproxy.cn为例。
Go 1.13 及以上(推荐)
打开你的终端并执行
$ go env -w GO111MODULE=on $ go env -w GOPROXY=https://goproxy.cn,direct
完成。
macOS 或 Linux
打开你的终端并执行
$ export GO111MODULE=on $ export GOPROXY=https://goproxy.cn
或者
$ echo "export GO111MODULE=on" >> ~/.profile $ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile $ source ~/.profile
完成。
Windows
打开你的 PowerShell 并执行 (此处博主已测试,仅当前powershell有效)
C:\> $env:GO111MODULE = "on" C:\> $env:GOPROXY = "https://goproxy.cn"
或者 (博主建议直接用这种,go get完成后可将GO111MODULE改回auto)
1. 打开“开始”并搜索“env”
2. 选择“编辑系统环境变量”
3. 点击“环境变量…”按钮
4. 在“<你的用户名> 的用户变量”章节下(上半部分)
5. 点击“新建…”按钮
6. 选择“变量名”输入框并输入“GO111MODULE”
7. 选择“变量值”输入框并输入“on”
8. 点击“确定”按钮
9. 点击“新建…”按钮
10. 选择“变量名”输入框并输入“GOPROXY”
11. 选择“变量值”输入框并输入“https://goproxy.cn”
12. 点击“确定”按钮
完成。