go get golang.org/x包 获取失败问题

前言

当我们使用 go get、go install、go mod 等命令时,会自动下载相应的包或依赖包。但由于众所周知的原因,类似于 golang.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)

解决方式

1. 手动下载

在github上都会有相应的库,对应golang.org 上的库,可以自行下载,然后放到相应的目录中去。

例如,安装grpc

# 安装grpc和protobuf
$ git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc
$ git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net
$ git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text
$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
$ git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto

# GOPATH 是golang环境变量

2. GOPROXY 环境变量

青牛云 和阿里云都都有golang.org 相应的镜像,
从 Go 1.11 版本开始,官方支持了 go module 包依赖管理工具。其实还新增了 GOPROXY 环境变量。
如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。同时,GOPROXY 依赖go module 功能,GO111MODULE=on 也要设置,不然GOPROXY不能生效。

阿里云镜像:
go env -w GO111MODULE=on
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/

发布了70 篇原创文章 · 获赞 1 · 访问量 1217

猜你喜欢

转载自blog.csdn.net/weixin_39658118/article/details/104415829