Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[arch] 多次 chsrc set arch 后 mirrorlist 累积旧 Server 行,upstream 官方源地址无效

未关闭
#393 2 条评论 2 个 reaction 已指派 1 人 在 GitHub 查看

@yayoinoyume 已经在做这个了。

开始于 2026年9月7日。

评估

这个 Issue 还没有评估数据。

描述

Linux os_dish 源

问题描述

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,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

RubyMetric/chsrc 的其他 Issue

查看 RubyMetric/chsrc 的全部 Issue

相似的 Issue

更多 C Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。