来源:OSCHINA 时间:2023-01-11 09:18:56
(资料图片)
开源代码托管平台 SourceHut 宣布把Go Module 镜像列入“黑名单”,并将于 2023 年 2 月 24 日禁止对 Go Module 镜像进行 git 访问。
据介绍,从 2 月 24 日开始,用户在从 SourceHut 仓库导入模块的 Go 软件包上使用go get
或类似命令时,将会遇到类似于以下的错误消息:
$ go getgo: downloading git.sr.ht/~sircmpwn/foobaz v0.0.0-20230108094957-81402546c10ego: 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 Foundserver 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 镜像的访问。
谷歌推出新的文本生成图像模型“Muse”,声称性能为同类最佳
当前聚焦:开发者希望恢复 GCC 的 Java Front-End
每日焦点!Linux 4.9 正式 EOL ,结束持续 6 年的 LTS 周期