(golang在国外为啥不火)(golang为什么没火起来)

少废话版:

用一个 glide 的国人改进版使用 mirror 功能来加速下载一些不能访问的 golang 库,具体参考 https://github.com/xkeyideal/glide/blob/master/README_CN.md

话痨版:

在中国搞技术的应该都对 mirror 这个东西比较熟悉,写代码的 python, ruby, js, java 的代码仓库都得去国内找个 mirror,弄操作系统不管是 yum 系的还是 deb 系的都会装完机后去改下载源,就连玩 docker 装完了也要先加个 docker 镜像仓库的 mirror。尽管各种 mirror 的最初设计都是出于一些企业级的应用场景,但谁让国内程序员金贵,不给企业级的服务就不能写代码呢。下面是阿里的一个 mirror 中心,可以感受一下:

(golang在国外为啥不火)(golang为什么没火起来)

然而作为 golang 的程序员比较悲催的一点是 golang 并没有一个集中的软件中心,加之现在的依赖工具又没一个标准所以几乎没见过给 golang 在国内做 mirror 的。不过好在大部分的库都是在 github 上,而 github 还算是可用的,大部分情况下还不是太糟。

但是总有些依赖并不是在 github 上的,有一些常用库在 http://golang.org 上,而对于搞容器的很多依赖在 http://k8s.io 上,这两个网址都是托管在邪恶的 google 上,国内保护我们不让访问,我们就必须想办法了。

第一个方法:

由于这两个网站在 github 上都有一个同步仓库,分别在 http://github.com/golang 和 http://github.com/kubernetes 所以比较笨的方法就是去下载 github 上对应的代码,然后在手动把目录名改回去,这样 golang 就可以认了。但是这种做法一来比较麻烦,二来升级库的时候会很麻烦,三来很多自动化的依赖管理工具就不能用了,所以大的项目并不推荐这么搞。

第二个方法:

glide 算是一个还比较流行的 golang 依赖管理,他提供了一个 mirror 的命令,可以进行自动的 package 地址替换,比如我想下载 http://golang.org/x/net 那么先敲一个

glide mirror set https://golang.org/x/net https://github.com/golang/net --vcs git

可以在 ~/.glide/mirror.yaml 里看到所有进行 mirror 的 pacakge 这样就可以进行自动的地址替换。所有 http://golang.org 和 http://k8s.io 的库都加进来就可在下载的时候进行自动替换了。

不过 glide mirror 有一个问题就是无法正确的处理 subpackage 比如我想下载 http://golang.org/x/net/http2 这个 mirror 就没有办法设置了,设置成 http://github.com/golang/net 会把这个项目覆盖到 http2 目录,设置为 http://github.com/golang/net/http2 又会报找不到 vcs 文件信息。

第三个方法:

也就是终极方法,使用一个我国程序员 patch 过的一个 glide 版本(大概国外人都没这个需求),给 mirror 命令新加了一个 base 参数,上面的例子通过 glide mirror set https://golang.org/x/net/http2 https://github.com/golang/net --base golang.org/x/net --vcs git 就可以解决了

具体的配置信息可以点击https://github.com/xkeyideal/glide/blob/master/README_CN.md,看看作者自己的一个 README。

希望经过这番折腾,可以让你写代码的时候心情好一点点。

(golang在国外为啥不火)(golang为什么没火起来)

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者我的看法所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(golang在国外为啥不火)(golang为什么没火起来)
本文链接:https://www.51qsb.cn/article/dvjppe.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2023-08-10
下一篇2023-08-10

你可能还想知道

发表回复

登录后才能评论