GOPROXY:解决go get golang.org/x包失败问题

 更新时间:2024年01月17日 15:04:29   作者:琦彦  
这篇文章主要介绍了GOPROXY:解决go get golang.org/x包失败问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

问题现象

当我们使用 go getgo installgo 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/

参考链接:

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

https://goproxy.io/zh/

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结

    Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结

    这篇文章主要介绍了Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结,本文直接给出操作代码,同时对代码加上了详细注释,需要的朋友可以参考下
    2014-11-11
  • 详解Go语言中select语句的常见用法

    详解Go语言中select语句的常见用法

    这篇文章主要是来和大家介绍一下Go语言中select 语句的常见用法,以及在使用过程中的注意事项,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-07-07
  • 一文详解Go语言切片是如何扩容的

    一文详解Go语言切片是如何扩容的

    切片是一个拥有相同类型元素的可变长度的序列,它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。所以本文就来看看Go语言切片是如何扩容的吧
    2023-04-04
  • golang 中 recover()的使用方法

    golang 中 recover()的使用方法

    这篇文章主要介绍了Guam与golang  recover()的使用方法,Recover 是一个Go语言的内建函数,可以让进入宕机流程中的 goroutine 恢复过来,下文更多相关资料需要的小伙伴可以参考一下
    2022-04-04
  • go mod包拉不下来的问题及解决方案

    go mod包拉不下来的问题及解决方案

    这篇文章主要介绍了go mod包拉不下来的问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • LRU LFU TinyLFU缓存算法实例详解

    LRU LFU TinyLFU缓存算法实例详解

    这篇文章主要为大家介绍了LRU LFU TinyLFU缓存算法实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 一键定位Golang线上服务内存泄露的秘籍

    一键定位Golang线上服务内存泄露的秘籍

    内存泄露?别让它拖垮你的Golang线上服务!快速掌握Go语言服务内存泄漏排查秘籍,从此问题无处遁形,一文读懂如何精准定位与有效解决Golang应用中的内存问题,立即阅读,让性能飞升!
    2024-01-01
  • Golang高效解析和生成XML的示例详解

    Golang高效解析和生成XML的示例详解

    这篇文章将从Golang中处理XML的基本概念开始,详细介绍如何读取和解析XML文件,然后转向如何创建和输出XML数据,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • 关于Go语言中的IO操作详解

    关于Go语言中的IO操作详解

    在现代软件开发中,高效的输入输出(I/O)操作是提高程序性能的关键之一,Go语言提供了丰富的I/O操作接口,使得文件读写、网络通信等任务变得简单而高效,本文介绍了关于Go语言中的IO操作,需要的朋友可以参考下
    2024-10-10
  • Go语言中的UTF-8实现

    Go语言中的UTF-8实现

    这篇文章主要介绍了Go语言中的UTF-8实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论