问题描述
go getgo installgo modgolang.org/x/...
$ go get -u golang.org/x/sys
go get golang.org/x/sys: unrecognized import path "golang.org/x/sys" (https fetch: Get https://golang.org/x/sys?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
解决方式
那我们该如何解决问题呢?毕竟还要制造 bug 的嘛~
手动下载
golang.org/x/...golang.org/x/textgithub.com/golang/text
mkdir $GOPATH/src/golang.org/x
cd $GOPATH/src/golang.org/x
git clone git@github.com:golang/text.git
rm -rf text/.git
当如果需要指定版本的时候,该方法就无解了,因为 GitHub 上的镜像仓库多数都没有 tag。并且,手动嘛,程序员怎么能干呢,尤其是依赖的依赖,太多了。
设置代理
如果你有代理,那么可以设置对应的环境变量:
export http_proxy=http://proxyAddress:port
export https_proxy=http://proxyAddress:port
all_proxy
export all_proxy=http://proxyAddress:port
go mod replace
go modulesreplacegolang.org/x
go modulego mod$GOPATHmoduleexport GO111MODULE=on
以下为参考示例:
module example.com/hello
require (
golang.org/x/text v0.3.0
)
replace (
golang.org/x/text => github.com/golang/text v0.3.0
)
类似的还有 glide、gopm 等这类第三方包管理工具,都不同方式的解决方案提供给我们。
GOPROXY 环境变量
终于到了本文的终极大杀器 —— GOPROXY。
Go 1.11go module
GOPROXY
GOPROXYhttps://goproxy.io
export GOPROXY=https://goproxy.io
export GOPROXY=
PowerShell
$env:GOPROXY = "https://goproxy.io"
GOPROXY
参考资料
- goproxy.io for Go modules
- goproxy.io
感谢您的阅读,觉得内容不错,点个赞吧 ????