最优解:解决gfw下 go get golang.org/x 包失败

某天在用golang写代码,需要用到ssh功能,于是在网上搜了一下发现有个golang.org/x/crypto/ssh包,很自然就想到要安装

go get -u golang.org/x/crypto/ssh

你会发现由于golang.org官网各种网络问题,很难安装
哈哈,找到一种goproxy的解决方案,该方案适用于go 1.13及以上的版本

ding@ding-Lenovo:~$ go version
go version go1.13.1 linux/amd64
ding@ding-Lenovo:~$ 

打开终端,用下面命令直接设置

go env -w GOPROXY=https://goproxy.cn,direct

设置完之后,我以为直接生效了,又去go get了一下,发现还是报一样的错,有点失望,原来需要依赖于 go module 功能,即go的环境变量GO111MODULE要打开,如何打开?如下命令即可,在终端执行

go env -w GO111MODULE=on

打开GO111MODULE设置前后对比
打开前

ding@ding-Lenovo:~$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN="/home/ding/tools/go/go1.13.1/bin"
GOCACHE="/home/ding/.cache/go-build"
GOENV="/home/ding/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/ding/tools/go/gopath"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct"
GOROOT="/home/ding/tools/go/go1.13.1"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/ding/tools/go/go1.13.1/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build606174629=/tmp/go-build -gno-record-gcc-switches"

打开后

ding@ding-Lenovo:~$ go env 
GO111MODULE="on"
GOARCH="amd64"
GOBIN="/home/ding/tools/go/go1.13.1/bin"
GOCACHE="/home/ding/.cache/go-build"
GOENV="/home/ding/.config/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GONOPROXY=""
GONOSUMDB=""
GOOS="linux"
GOPATH="/home/ding/tools/go/gopath"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct"
GOROOT="/home/ding/tools/go/go1.13.1"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/home/ding/tools/go/go1.13.1/pkg/tool/linux_amd64"
GCCGO="gccgo"
AR="ar"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build480318168=/tmp/go-build -gno-record-gcc-switches"

只要注意GO111MODULE项
此番设置后,再来安装ssh模块,看结果如何?

ding@ding-Lenovo:~$ go get -u golang.org/x/crypto/ssh
go: finding golang.org/x/crypto latest
go: downloading golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550
go: extracting golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550
go: downloading golang.org/x/sys v0.0.0-20190412213103-97732733099d
go: extracting golang.org/x/sys v0.0.0-20190412213103-97732733099d
go: finding golang.org/x/sys latest
go: downloading golang.org/x/sys v0.0.0-20191010194322-b09406accb47
go: extracting golang.org/x/sys v0.0.0-20191010194322-b09406accb47

哈哈,真爽!成功安装!!!感谢七牛云对go的支持,https://goproxy.cn就是他们家的无私贡献。
愉快的go代码去。。。

参考资料:
https://shockerli.net/post/go-get-golang-org-x-solution/
https://goproxy.io/
https://goproxy.cn/
https://github.com/goproxy/goproxy.cn


                </div>

您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
本站大部分内容收集于互联网,如果有侵权内容、不妥之处,请联系删除。敬请谅解!

  Previous post etcd 集群测试
Next post   go1.13 mod 实践和常见问题

  关于博主【WANG-FEiHU】

Duplicate
-----------Complicate
--------------------------Appreciate
----------------------------------------[Fate]
-----------------------------------------------Elevate

三人行 有吾师

-------------花有重开日 梦无止境时-------------

  分类目录

  monitor(TD)

青春就是用来追忆的,当你怀揣着它时,它一文不值,只有将它耗尽后,再回过头看,一切才有了意义,爱过我们的人和伤害过我们的人,都是我们青春存在的意义。

在这有限的时间里,我们应该珍惜生命,珍惜机会,更要珍惜那得之不易的时间。因那滴答做响的时间脚步,一旦走过,再不回头。

要打败任何事情得先学会打败自己。

我会把每一次改变当做成长,哪怕是痛也值得。

时无英雄,使竖子成名

少年不识愁滋味,爱上层楼。爱上层楼。为赋新词强说愁。而今识尽愁滋味,欲说还休。欲说还休。却道天凉好个秋。