golang gopm get -g -v 无法获取第三方库的解决方案


Posted in Golang onMay 05, 2021

gopm get -g -v golang.org/x/text

//网络不通
[GOPM] ?[36m03-14 07:36:49?[0m [?[31mERROR?[0m] golang.org/x/text: fail to make request: Get https://gopm.io/api/v1/revision?pkgname=golang.org/x/text: dial tcp: look
up gopm.io: getaddrinfow: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritativ
e server.

解决方法

cd ~/goPath/src/golang.org/x
git clone https://github.com/golang/text.git

补充:GOPROXY:解决 go get golang.org/x 包失败

问题现象

当我们使用 go get、go install、go mod 等命令时,会自动下载相应的包或依赖包。但由于众所周知的原因,类似于 golang.org/x/... 的包会出现下载失败的情况。如下所示:

package golang.org/x/tools/cmd/goimports/...: unrecognized import path "golang.org/x/tools/cmd/goimports"

(https fetch: Get https://golang.org/x/tools/cmd/goimports?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.)

问题解决:

GOPROXY

我们知道从 Go 1.11 版本开始,官方支持了 go module 包依赖管理工具。

其实还新增了 GOPROXY 环境变量。如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。这无疑对我等无法科学上网的开发良民来说是最大的福音。

更可喜的是,goproxy.io 这个开源项目帮我们实现好了我们想要的。该项目允许开发者一键构建自己的 GOPROXY 代理服务。同时,也提供了公用的代理服务 https://goproxy.io,我们只需设置该环境变量即可正常下载被墙的源码包了:

Go 版本>=1.11 设置GOPROXY

在 Linux 或 macOS 上面,需要运行下面命令:

Bash / 复制

# 启用 Go Modules 功能
export GO111MODULE=on
# 配置 GOPROXY 环境变量
export GOPROXY=https://goproxy.io

或者,可以把上面的命令写到 .bashrc 或 .bash_profile 文件当中。

在 Windows 上,需要运行下面命令:

PowerShell 复制

# 启用 Go Modules 功能
$env:GO111MODULE="on"
# 配置 GOPROXY 环境变量
$env:GOPROXY=https://goproxy.io

现在,当你构建或运行你的应用时,Go 将会通过 goproxy.io 获取依赖。更多信息请查看 goproxy 仓库

Go 版本>=1.13 设置GOPROXY

如果你使用的 Go 版本>=1.13, 你可以通过设置 GOPRIVATE 环境变量来控制哪些私有仓库和依赖(公司内部仓库)不通过 proxy 来拉取,直接走本地,设置如下:

Go version >= 1.13 复制

go env -w GOPROXY=https://goproxy.io,direct
# 设置不走 proxy 的私有仓库,多个用逗号相隔
go env -w GOPRIVATE=*.corp.example.com

七牛云 goproxy.cn

goproxy.io 提供了一个开源的解决方案允许开发者一键构建自己的 GOPROXY 代理服务。同时,也提供了公用的代理服务 https://goproxy.io,而七牛云也出了个国内代理 goproxy.cn 方便国内用户更快的访问

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

阿里云Go Module代理

go module公共代理仓库,代理并缓存go模块。你可以利用该代理来避免DNS污染导致的模块拉取缓慢或失败的问题,加速你的构建

地址

https://mirrors.aliyun.com/goproxy/

使用

1.使用go1.11以上版本并开启go module机制

2.导出GOPROXY环境变量

export GOPROXY=https://mirrors.aliyun.com/goproxy/

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Golang 相关文章推荐
go语言map与string的相互转换的实现
Apr 07 Golang
go语言-在mac下brew升级golang
Apr 25 Golang
Go 实现英尺和米的简单单位换算方式
Apr 29 Golang
浅谈Golang 嵌套 interface 的赋值问题
Apr 29 Golang
Golang 编译成DLL文件的操作
May 06 Golang
基于Go语言构建RESTful API服务
Jul 25 Golang
Golang并发操作中常见的读写锁详析
Aug 30 Golang
如何利用golang运用mysql数据库
Mar 13 Golang
浅谈GO中的Channel以及死锁的造成
Mar 18 Golang
golang操作rocketmq的示例代码
Apr 06 Golang
Golang 字符串的常见操作
Apr 19 Golang
go类型转换及与C的类型转换方式
May 05 #Golang
Golang: 内建容器的用法
May 05 #Golang
Go标准容器之Ring的使用说明
May 05 #Golang
go语言中GOPATH GOROOT的作用和设置方式
go设置多个GOPATH的方式
May 05 #Golang
浅谈golang 中time.After释放的问题
May 05 #Golang
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
May 05 #Golang
You might like
php 使用array函数实现分页
2015/02/13 PHP
PHP Reflection API详解
2015/05/12 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
web 页面分页打印的实现
2009/06/22 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
jquery下checked取值问题的解决方法
2012/08/09 Javascript
js传中文参数controller里获取参数乱码问题解决方法
2014/01/03 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
javascript HTML5文件上传FileReader API
2020/03/27 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
vue中动态绑定表单元素的属性方法
2018/02/23 Javascript
iconfont的三种使用方式详解
2018/08/05 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
Python操作SQLite简明教程
2014/07/10 Python
Python中lambda的用法及其与def的区别解析
2014/07/28 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
Python中使用双下划线防止类属性被覆盖问题
2019/06/27 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
使用TensorFlow直接获取处理MNIST数据方式
2020/02/10 Python
Python多线程多进程实例对比解析
2020/03/12 Python
python中判断文件结束符的具体方法
2020/08/04 Python
法学研究生自我鉴定范文
2013/12/04 职场文书
外企求职信范文分享
2013/12/31 职场文书
中国梦我的梦演讲稿
2014/04/23 职场文书
公司董事任命书
2015/09/21 职场文书
九年级英语教学反思
2016/02/15 职场文书
Vue的生命周期一起来看看
2022/02/24 Vue.js