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语言中的匿名函数

    一文带你了解Go语言中的匿名函数

    无论是在Go语言还是其他编程语言中,匿名函数都扮演着重要的角色,本文将详细介绍Go语言中匿名函数的概念和使用方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-06-06
  • 在Golang中使用C语言代码实例

    在Golang中使用C语言代码实例

    这篇文章主要介绍了在Golang中使用C语言代码实例,本文先是给出了一个Hello World例子、Golang 引用 C例子,并总结了一些要注意的地方,需要的朋友可以参考下
    2014-10-10
  • Go语言 channel如何实现归并排序中的merge函数详解

    Go语言 channel如何实现归并排序中的merge函数详解

    这篇文章主要给大家介绍了关于Go语言 channel如何实现归并排序中merge函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-02-02
  • 一文带你了解Go语言中接口的使用

    一文带你了解Go语言中接口的使用

    这篇文章主要和大家分享一下Go语言中的接口的使用,文中的示例代码讲解详细,对我们学习Go语言有一定的帮助,需要的小伙伴可以参考一下
    2022-12-12
  • Go语言中init函数和defer延迟调用关键词详解

    Go语言中init函数和defer延迟调用关键词详解

    这篇文章主要介绍了Go语言中init函数和defer延迟调用关键词,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 一文带你了解Go中的内存对齐

    一文带你了解Go中的内存对齐

    一旦涉及到较为底层的编程,特别是与硬件交互,内存对齐是一个必修的课题,所以这篇文章小编就想来和大家聊一聊Go语言中的内存对齐,希望对大家有所帮助
    2023-10-10
  • 提升Golang应用性能:深入理解Context的应用

    提升Golang应用性能:深入理解Context的应用

    本文将深入探讨如何通过深入理解和正确应用Go语言中的Context来提升应用性能。需要的朋友可以参考下
    2023-09-09
  • 阿里云go开发环境搭建过程

    阿里云go开发环境搭建过程

    这篇文章主要介绍了阿里云go开发环境搭建过程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Golang中time.After的使用理解与释放问题

    Golang中time.After的使用理解与释放问题

    这篇文章主要给大家介绍了关于Golang中time.After的使用理解与释放问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • 十个Go map面试常考问题合集

    十个Go map面试常考问题合集

    go面试中,map相关知识点问的比较多,这篇文章主要为大家整理归纳了10个常考的问题,文中的示例代码讲解详细,希望对大家有一定的帮助
    2023-07-07

最新评论