[arch] 多次 chsrc set arch 后 mirrorlist 累积旧 Server 行,upstream 官方源地址无效
@yayoinoyume ci sta già lavorando.
Dal 7/9/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
问题描述
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
- Lingua principale
- C
- Stelle
- 6.9k
- Fork
- 285
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di RubyMetric/chsrc
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
RubyMetric/chsrc#396 ·
-
`ls` 命令呈现 "可用源" 的界面有改进空间Forse di nuovo libera @ccmywish l’ha presa 33 giorni fa e non c’è nessuna pull request aperta. Aperta改善加强
RubyMetric/chsrc#389 · 6 commenti · 1 assegnatario ·
-
对 `Omarchy`(基于 Arch Linux 的发行版)的支持Forse di nuovo libera @yayoinoyume l’ha presa 33 giorni fa e non c’è nessuna pull request aperta. ApertaLinux os_dish
RubyMetric/chsrc#387 · 8 commenti · 1 reazione · 1 assegnatario ·
-
`curl` 测速 段错误 (核心已转储)Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
RubyMetric/chsrc#386 · 4 commenti ·
-
对 `sources dish` 贡献者的展示Forse di nuovo libera @ccmywish l’ha presa 47 giorni fa e non c’è nessuna pull request aperta. Aperta改善加强
RubyMetric/chsrc#384 · 5 commenti · 1 assegnatario ·
Tutte le issue di RubyMetric/chsrc
Issue simili
-
rc_runtime_activate_richpresence leaves a half-initialised entry when the buffer allocation failsAperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
RetroAchievements/rcheevos#558 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
libsdl-org/SDL#16464 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
chore(gateway): emit INFO budget reserved/settled logs for proactivity v2 (chip task_2855f4ec)Forse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabackend
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
BasedHardware/omi#20940 ·
I maintainer di solito rispondono entro 1 giorno