Go 解决国内下载 go get golang.org/x 包失败 非原创

GOPROXY 环境变量

我们知道从 Go 1.11 版本开始,官方支持了 go module 包依赖管理工具。
其实还新增了 GOPROXY 环境变量。如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。这无疑对我等无法科学上网的开发良民来说是最大的福音。
更可喜的是,goproxy.io 这个开源项目帮我们实现好了我们想要的。该项目允许开发者一键构建自己的 GOPROXY 代理服务。同时,也提供了公用的代理服务 https://goproxy.io,我们只需设置该环境变量即可正常下载被墙的源码包了:

export GOPROXY=https://goproxy.io

不过,需要依赖于 go module 功能。可通过 export GO111MODULE=on 开启 MODULE。
如果项目不在 GOPATH 中,则无法使用 go get ...,但可以使用 go mod ... 相关命令。
也可以通过置空这个环境变量来关闭,export GOPROXY=

对于 Windows 用户,可以在 PowerShell 中设置:

$env:GOPROXY = "https://goproxy.io"

最后,我们当然推荐使用 GOPROXY 这个环境变量的解决方式,前提是 Go version >= 1.11

说明

本文非原创,因为依赖的问题,困扰我三天左右(现阶段我就晚上捣鼓go,白天有其它工作),通过 google 在网上找到一篇帖子,也就是上面的内容,配置 GOPROXY 之后,相关依赖都下载成功。之所以把内容贴过来,是因为国内可能无法访问该网页... 原帖内容不止这一个方法,但那些方法国内的帖子都有出现过,只有上文解决方法,我尚未遇到发现,原文地址:一键解决 go get golang.org/x 包失败

感谢走在前面的人 格物

物有本末,事有始终,知所先后,则近道矣。

本帖由 Summer 于 3个月前 加精
讨论数量: 4
GhostCoder

求教现在 GO 的包管理还像当初那样的不堪么

3个月前 评论
诺大的院子 3个月前

这个简直太爽了,,,比其他什么花里胡哨的操作和设置都要简单,而且速度超级快,,,唯一缺点就是只支持 module 吧,,,

3个月前 评论
JimChen

我想请教下这个真的就是只是代理么,我自己写的包,开启gomodule,go get 死活都下载不了

3个月前 评论
bigbug (楼主) 3个月前

Windows下为什么设置后还是失败

$ go version
go version go1.11 windows/amd64
$ go get -u github.com/winterssy/music-get
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: 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.)
package golang.org/x/crypto/ssh/terminal: unrecognized import path "golang.org/x/crypto/ssh/terminal" (https fetch: Get https://golang.org/x/crypto/ssh/terminal?go-get=1: dial tcp 216.239.37.1: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.)
4周前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!