如何实现一个 go packages 的开源镜像站?

go get 受限

go get使用的是git等版本控制仓库管理的文件作为包管理工具,因为git仓库是分散的,由于一些原因可能一些网站不能直接访问,也不方便设置系统代理。

$ go get -v -u github.com/ramya-rao-a/go-outline
github.com/ramya-rao-a/go-outline (download)
Fetching https://golang.org/x/tools/go/buildutil?go-get=1
https fetch failed: Get https://golang.org/x/tools/go/buildutil?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.
package golang.org/x/tools/go/buildutil: unrecognized import path "golang.org/x/tools/go/buildutil" (https fetch: Get https://golang.org/x/tools/go/buildutil?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.)

出现这种情况非常恶心。
有其他的方案实现吗?

同步方法或工具: 一般就是 Rsync, 然后从上游拉东西, 可以自己写脚本, 也可以用官方提供的工具, 例如 debian 的 ftpsync 等。 切勿使用 wget 等工具! 不能保证文件 link 等属性, 也无法做到增量同步, 浪费资源! 《搭建开源镜像站》

vscode 设置代理

设置全局代理在 vscode 安装插件的时候是没用的,必须要单独设置代理。

png

设置代理后就能够正常安装插件。