[arch] 多次 chsrc set arch 后 mirrorlist 累积旧 Server 行,upstream 官方源地址无效
@yayoinoyume 已经在做这个了。
开始于 2026年9月7日。
评估
这个 Issue 还没有评估数据。
描述
问题描述
1. Arch的换源操作不是幂等
chsrc set arch <源> 每次都会向 /etc/pacman.d/mirrorlist 追加(prepend)新的 Server 行,但从不清理旧行。多次换源后 mirrorlist 会累积所有历史源,例如:
chsrc set arch tuna→ mirrorlist 写入 tuna 行chsrc set arch ali→ mirrorlist 写入 ali 行(tuna 行仍在)chsrc set arch tencent→ mirrorlist 写入 tencent 行(tuna、ali 行仍在)
结果:mirrorlist 中出现多行 Server,且最先命中的可能是旧源(行为不可预期);累积行数随换源次数线性增长,文件越来越脏。这不是幂等操作,重复执行同一操作结果不同。
修复:实现换源的幂等操作,仅对 x86_64 有效。
2. 官方源地址 https://repo.archlinux.org 实际不存在
arch dish 的 UpstreamProvider(即 chsrc set arch upstream)地址为 https://repo.archlinux.org,但该域名不存在:
- 本机
curl -I https://repo.archlinux.org提示curl: (6) Could not resolve host: repo.archlinux.org。 - 在线DNS检测,这个地址没有任何A记录
- Arch 官方全局 mirrorlist 中无此条目。
- 官方推荐入口是
geo.mirror.pkgbuild.com(按地理位置自动选最近镜像)/fastly.mirror.pkgbuild.com
因此任何用户执行 chsrc set arch upstream ,会报 致命错误,且chsrc reset arch不可用,提示 暂未实现reset。
关联
已尝试实现修复并实测验证,具体见关联 PR #394
- 主要语言
- C
- 星标
- 6.9k
- 派生
- 285
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
RubyMetric/chsrc 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 82/100
RubyMetric/chsrc#396 ·
-
`ls` 命令呈现 "可用源" 的界面有改进空间可能重新可做 @ccmywish 于 32 天前认领,目前没有进行中的 PR。 未关闭改善加强
RubyMetric/chsrc#389 · 6 条评论 · 已指派 1 人 ·
-
对 `Omarchy`(基于 Arch Linux 的发行版)的支持可能重新可做 @yayoinoyume 于 32 天前认领,目前没有进行中的 PR。 未关闭Linux os_dish
RubyMetric/chsrc#387 · 8 条评论 · 1 个 reaction · 已指派 1 人 ·
-
难度 3/5 1-2 天 新手友好度 48/100
RubyMetric/chsrc#386 · 4 条评论 ·
-
对 `sources dish` 贡献者的展示可能重新可做 @ccmywish 于 46 天前认领,目前没有进行中的 PR。 未关闭改善加强
RubyMetric/chsrc#384 · 5 条评论 · 已指派 1 人 ·
相似的 Issue
-
backend
难度 2/5 1-3 小时 新手友好度 68/100
BasedHardware/omi#20940 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
kovidgoyal/kitty#10625 ·
维护者通常 1 天内回复
-
Feature Status: Needs Triage
难度 2/5 1-3 小时 新手友好度 73/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 67/100
维护者通常 1 天内回复
-
docs
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复