«

解决Go包管理代理网址无法访问的问题proxy.golang.org

时间:2024-2-21 13:25     作者:韩俊     分类: Go语言


在使用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. 点击“确定”按钮

完成。

标签: golang

热门推荐