Golang Go语言中申请中科大镜像站提供模块(依赖)镜像服务 欢迎关注和投票

发布于 1周前 作者 yibo5220 来自 Go语言

Golang Go语言中申请中科大镜像站提供模块(依赖)镜像服务 欢迎关注和投票

投票方式

下面是对提案的全文转载:

介绍

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/

开源的镜像实现有:

也许贵站可以采用和参考。

备注

  • 相关的 Issue: #225 .

更多关于Golang Go语言中申请中科大镜像站提供模块(依赖)镜像服务 欢迎关注和投票的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang Go语言中申请中科大镜像站提供模块(依赖)镜像服务 欢迎关注和投票的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


针对帖子中提到的“Golang Go语言中申请中科大镜像站提供模块(依赖)镜像服务”这一议题,作为IT领域的GO语言专家,我认为这确实是一个值得关注和讨论的话题。以下是我的一些专业见解:

一、中科大镜像站简介

中国科学技术大学开源软件镜像站(http://mirrors.ustc.edu.cn/)是一个提供开源软件、操作系统及各类资源镜像下载服务的网络站点,其中包括Go语言的相关模块和依赖。

二、使用镜像站的优势

  1. 加速下载:对于位于中国大陆的开发者来说,使用中科大镜像站可以显著加快Go语言模块和依赖的下载速度。
  2. 提高稳定性:镜像站通常具有更高的服务稳定性,能够减少因网络问题导致的下载失败。

三、申请与配置

虽然帖子中提到了“申请”镜像服务,但实际上,开发者通常无需申请即可直接使用中科大镜像站。只需将GOPROXY环境变量设置为中科大镜像站的地址即可。

综上所述,中科大镜像站为Go语言开发者提供了便捷的模块和依赖下载服务。建议开发者在需要时,优先考虑使用此类镜像站以提高开发效率。

回到顶部