Golang Go语言中申请中科大镜像站提供模块(依赖)镜像服务 欢迎关注和投票
Golang Go语言中申请中科大镜像站提供模块(依赖)镜像服务 欢迎关注和投票
投票方式
- 中科大新增镜像申请的 Issue: https://github.com/ustclug/mirrorrequest/issues/234
- 使用 Emoji +1 (向上的大拇指)表情来投票。
下面是对提案的全文转载:
介绍
Golang 从 1.11 版本起支持以模块( Module )的形式管理依赖,并且支持下载依赖时使用镜像源以加速下载。
Golang 的依赖并没有统一的上游(但镜像仍然可行,请参阅后文),常见上游为:
由于一些原因,国内网络环境难以访问其中的一些上游。
为什么希望添加该镜像
Golang 是一门在工程学和实际应用上都很优秀的语言,拥有广袤的云原生应用和生态。因为网络原因而无法获得这些优质依赖未免可惜。
如何实现镜像
按照 Go 的 module proxy 规范,满足下列要求的 web 服务即可视为一个合格的 module proxy:
A Go module proxy is any web server that can respond to GET requests for
URLs of a specified form. The requests have no query parameters, so even
a site serving from a fixed file system (including a file:/// URL)
can be a module proxy.
The GET requests sent to a Go module proxy are:
GET $GOPROXY/<module>/@v/list returns a list of all known versions of the
given module, one per line.
GET $GOPROXY/<module>/@v/<version>.info returns JSON-formatted metadata
about that version of the given module.
GET $GOPROXY/<module>/@v/<version>.mod returns the go.mod file
for that version of the given module.
GET $GOPROXY/<module>/@v/<version>.zip returns the zip archive
for that version of the given module.
To avoid problems when serving from case-sensitive file systems,
the <module> and <version> elements are case-encoded, replacing every
uppercase letter with an exclamation mark followed by the corresponding
lower-case letter: github.com/Azure encodes as github.com/!azure.
The JSON-formatted metadata about a given module corresponds to
this Go data structure, which may be expanded in the future:
type Info struct {
Version string // version string
Time time.Time // commit time
}
The zip archive for a specific version of a given module is a
standard zip file that contains the file tree corresponding
to the module’s source code and related files. The archive uses
slash-separated paths, and every file path in the archive must
begin with <module>@<version>/, where the module and version are
substituted directly, not case-encoded. The root of the module
file tree corresponds to the <module>@<version>/ prefix in the
archive.
Even when downloading directly from version control systems,
the go command synthesizes explicit info, mod, and zip files
and stores them in its local cache, $GOPATH/pkg/mod/cache/download,
the same as if it had downloaded them directly from a proxy.
The cache layout is the same as the proxy URL space, so
serving $GOPATH/pkg/mod/cache/download at (or copying it to)
https://example.com/proxy would let other users access those
cached module versions with GOPROXY=https://example.com/proxy.
注意: 由于 Go 提案 25530 (官方接受)的存在,Go proxy 还需要能够按一定规则返回依赖的 checksum 信息。
官方实现(没有开源)在: https://proxy.golang.org/
开源的镜像实现有:
- https://github.com/goproxyio/goproxy
- https://github.com/goproxy/goproxy.cn
- https://github.com/goproxy/goproxy
也许贵站可以采用和参考。
备注
- 相关的 Issue: #225 .
更多关于Golang Go语言中申请中科大镜像站提供模块(依赖)镜像服务 欢迎关注和投票的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于Golang Go语言中申请中科大镜像站提供模块(依赖)镜像服务 欢迎关注和投票的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
针对帖子中提到的“Golang Go语言中申请中科大镜像站提供模块(依赖)镜像服务”这一议题,作为IT领域的GO语言专家,我认为这确实是一个值得关注和讨论的话题。以下是我的一些专业见解:
一、中科大镜像站简介
中国科学技术大学开源软件镜像站(http://mirrors.ustc.edu.cn/)是一个提供开源软件、操作系统及各类资源镜像下载服务的网络站点,其中包括Go语言的相关模块和依赖。
二、使用镜像站的优势
- 加速下载:对于位于中国大陆的开发者来说,使用中科大镜像站可以显著加快Go语言模块和依赖的下载速度。
- 提高稳定性:镜像站通常具有更高的服务稳定性,能够减少因网络问题导致的下载失败。
三、申请与配置
虽然帖子中提到了“申请”镜像服务,但实际上,开发者通常无需申请即可直接使用中科大镜像站。只需将GOPROXY环境变量设置为中科大镜像站的地址即可。
综上所述,中科大镜像站为Go语言开发者提供了便捷的模块和依赖下载服务。建议开发者在需要时,优先考虑使用此类镜像站以提高开发效率。