go get golang.org/x 包失败
一 问题背景
当我们使用 go get
、go install
、go mod
等命令时,会自动下载相应的包或依赖包。但由于众所周知的原因,类似于 golang.org/x/...
的包会出现下载失败的情况。如下所示:
|
|
二 解决方案一(手动下载)
常见的 golang.org/x/...
包,一般在 GitHub 上都有官方的镜像仓库对应。比如 golang.org/x/text
对应 github.com/golang/text
。所以,我们可以手动下载或 clone 对应的 GitHub 仓库到指定的目录下。
|
|
三 解决方案(二)设置代理
如果你自己或者花钱买了代理,那么可以设置对应的环境变量:
|
|
或者,直接用 all_proxy
:
|
|
四 解决方案(三)go mod replace
从 Go 1.11 版本开始,新增支持了 go modules
用于解决包依赖管理问题。该工具提供了 replace
,就是为了解决包的别名问题,也能替我们解决 golang.org/x
无法下载的的问题。
go module
被集成到原生的 go mod
命令中,如果你的代码库在 $GOPATH
中,module
功能是默认不会开启的通过一个环境变量即可开启 export GO111MODULE=on
。
如下go.mod(通过repalce,替换)
|
|
五 终极解决方案(四)GOPROXY 环境变量
设置 —— GOPROXY。
我们知道从 Go 1.11
版本开始,官方支持了 go module
包依赖管理工具。
其实还新增了 GOPROXY
环境变量。如果设置了该变量,下载源代码时将会通过这个环境变量设置的代理地址,而不再是以前的直接从代码库下载。
goproxy.io 这个开源项目帮我们实现好了我们想要的。该项目允许开发者一键构建自己的 GOPROXY
代理服务。同时,也提供了公用的代理服务 https://goproxy.io
,我们只需设置该环境变量即可正常下载被墙的源码包了:
|
|
不过,需要依赖于 go module
功能。可通过 export GO111MODULE=on
开启 MODULE。
如果项目不在 GOPATH
中,则无法使用 go get ...
,但可以使用 go mod ...
相关命令。
也可以通过置空这个环境变量来关闭,export GOPROXY=
。
对于 Windows ,可以在 PowerShell
中设置:
|
|
最后,使用 GOPROXY
这个环境变量的解决方式,前提是 Go version >= 1.11。
同时,七牛也出了个国内代理 goproxy.cn 方便国内用户更快的访问不能访问的包
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构