如何解决golang使用go get命令从github上一键安装项目时获取golang.org的依赖包失败问题?

我知道因为golang.org在壁外,网上的方法就不用再说了。
本来go get是一个一键的命令,所有依赖都是自动安装的,我手动对着包名去github上把依赖都clone了,还要拷到对应的目录里去,这安装流程还有什么体验可言?
为什么别的语言的包管理,比如php的composer,node的npm都可以自行修改配置,改成国内的镜像源,然后无痛安装依赖包,而golang就不行?
我搜了这么多资料,看到的全是手动!手动!手动!

阅读 7.3k
4 个回答

不行的原因是go在依赖远程包时都是直接写上域名的,然而所依赖的包又依赖了另一个域名的包。。。

为什么要用域名?我的猜测:

  1. go原来不想让依赖库都在github,但又不想放弃github
  2. 可以搭建公司自己的依赖库

有没有办法解决?

因为基于域名的原因,导致一个项目所依赖的包有可能来自很多的域名(也就是说go的库并不像其它语言一样只提供中心化的统一库),所以单一的国内镜像是解决不了问题的。

当然了,你如果愿意,可以试试这样(纯属开脑洞):

1。搭建自己的go库镜像(可能需要从多个地方收集,同时可能还要解决同名的问题)

  1. 改写go get命令,碰到域名依赖,就进行内置的域名解释,使用自己的镜像

这个问题确实比较头疼。 大概没有国内源的问题 至少阻挡一批人使用golang!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题