[arch] 多次 chsrc set arch 后 mirrorlist 累积旧 Server 行,upstream 官方源地址无效
@yayoinoyume ya está trabajando en esto.
Desde el 7/9/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
问题描述
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
- Lenguaje dominante
- C
- Estrellas
- 6.9k
- Forks
- 285
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de RubyMetric/chsrc
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
RubyMetric/chsrc#396 ·
-
是否考虑新增自定义源增加别名Abierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
RubyMetric/chsrc#398 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 22/100
RubyMetric/chsrc#397 ·
-
`ls` 命令呈现 "可用源" 的界面有改进空间Quizá libre de nuevo @ccmywish la tomó hace 36 días y no hay ningún pull request abierto. Abierto改善加强
RubyMetric/chsrc#389 · 6 comentarios · 1 asignado ·
-
对 `Omarchy`(基于 Arch Linux 的发行版)的支持Quizá libre de nuevo @yayoinoyume la tomó hace 36 días y no hay ningún pull request abierto. AbiertoLinux os_dish
RubyMetric/chsrc#387 · 8 comentarios · 1 reacción · 1 asignado ·
Todos los issues de RubyMetric/chsrc
Issues similares
-
good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Los mantenedores suelen responder en 1 día
-
Add `pdfcpu` to the pantryAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
tmewett/BrogueCE#929 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug : find_key() compares kty against "ocy" instead of "oct", breaking kid-less HS256 verificationAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
OpenPrinting/cups#1756 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 76/100
SteamGridDB/SGDBoop#147 ·