技术学习分享_CKX技术 技术资讯 开源代码托管平台 SourceHut “拉黑”Go Module 镜像

开源代码托管平台 SourceHut “拉黑”Go Module 镜像

广告位

开源代码托管平台 SourceHut 宣布把 Go Module 镜像列入“黑名单”,并将于 2023 年 2 月 24 日禁止对 Go Module 镜像进行 git 访问。

开源代码托管平台 SourceHut “拉黑”Go Module 镜像

据介绍,从 2 月 24 日开始,用户在从 SourceHut 仓库导入模块的 Go 软件包上使用go get或类似命令时,将会遇到类似于以下的错误消息:

  $ go get  go: downloading git.sr.ht/~sircmpwn/foobaz v0.0.0-20230108094957-81402546c10e  go: git.sr.ht/~sircmpwn/foobaz@v0.0.0-20230108094957-81402546c10e: verifying module: git.sr.ht/~sircmpwn/foobaz@v0.0.0-20230108094957-81402546c10e: reading https://sum.golang.org/lookup/git.sr.ht/~sircmpwn/foobaz@v0.0.0-20230108094957-81402546c10e: 404 Not Found  	server response:  	not found: git.sr.ht/~sircmpwn/foobaz@v0.0.0-20230108094957-81402546c10e: invalid version: git ls-remote -q origin in /tmp/gopath/pkg/mod/cache/vcs/568e5edafe93f7887c0b6f718b0f17ea91c63c35822fb28628535f172b5429b7: exit status 128:  		fatal: unable to access 'https://git.sr.ht/~sircmpwn/foobaz/': The requested URL returned error: 429

解决方案:

  $ export GOPRIVATE=git.sr.ht  $ go get # works

有关更多详细信息,请继续阅读。

对于 Go 开发者来说,他们需要通过 git 获取 Go Module,因此开发者使用git.sr.ht/~sircmpwn/dowork”进行导入将会由工具链通过 git 获取相应的仓库,以使其在用户的 Go 环境中可用。每个请求都通过 proxy.golang.org 上的代理服务进行路由,该服务提供了许多功能:

  • 通过 Google 的缓存提供可靠和快速的 Go Module 下载访问
  • 存储 Go Module 的冗余副本以确保可用性
  • 为校验数据库 (checksum database) 记录其校验的独立来源
  • 提供新 Go Module 的索引

但这带来了许多缺点。例如大多数 Go 开发者并不知道他们获取的每个软件包都伴随着对 Google 服务器的请求,这意味着需要和 Google 确保信任关系来返回真实的软件包。此外,如果底层的源仓库消失或与缓存不同步,这个问题对 Go 开发者来说是不可见的,这可能会导致他们的软件依赖于不再存在的模块或模块版本。

对于 SourceHut 来说,代理服务会定期从源码仓库中获取 Go 软件包,以检查是否有更新。这些请求来自许多服务器,它们没有相互协调以减少其工作,并且频率可高达每小时 2500 次,往往一次就有十几个克隆,而且通常是高度冗余的:一个 git 仓库每小时可被取用 100 次以上。

SourceHut 表示,这些流量会产生过大的后台工作负载。他们曾联系 Go 团队合作寻求解决方案,但没有成功。因此,他们决定屏蔽 Go Module 镜像,等到上述问题解决后会重新恢复对 Go Module 镜像的访问。

展开阅读全文
本文来自网络,不代表技术学习分享_CKX技术立场,转载请注明出处。

作者: CKX技术

上一篇
下一篇
广告位

发表回复

返回顶部