Reflector (正體中文)
Reflector 是一個腳本程式,它可以從 MirrorStatus 頁面獲得最新的鏡像列表,過濾最新的鏡像,按速度排序,並且覆蓋 /etc/pacman.d/mirrorlist
文件。
安裝
用法
警告:
- 在下面的例子中,
/etc/pacman.d/mirrorlist
將被覆寫。執行之前請先進行備份。 - 同步或更新 Pacman 之前,確保生成的
/etc/pacman.d/mirrorlist
中沒有你認為不信任的條目。
執行下面的命令以查看所有可用的命令:
# reflector --help
範例
以下載速度對最近同步的五個鏡像評分與排序,並覆蓋 /etc/pacman.d/mirrorlist
文件:
# reflector --verbose --latest 5 --sort rate --save /etc/pacman.d/mirrorlist
選擇200個最近同步的 HTTP 或 HTTPS 鏡像,依下載速度排序,並覆蓋 /etc/pacman.d/mirrorlist
文件:
# reflector --latest 200 --protocol http --protocol https --sort rate --save /etc/pacman.d/mirrorlist
選擇12小時內同步並且位於法國或德國的 HTTPS 鏡像,依下載速度排序,並覆蓋 /etc/pacman.d/mirrorlist
文件:
# reflector --country France --country Germany --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
自動化
Pacman hook
你可以建立一個 pacman hook 執行 reflector ,並在每次 pacman-mirrorlist 升級時刪除建立的 .pacnew 文件。
/etc/pacman.d/hooks/mirrorupgrade.hook
[Trigger] Operation = Upgrade Type = Package Target = pacman-mirrorlist [Action] Description = Updating pacman-mirrorlist with reflector and removing pacnew... When = PostTransaction Depends = reflector Exec = /bin/sh -c "reflector --country 'United States' --latest 200 --age 24 --sort rate --save /etc/pacman.d/mirrorlist; rm -f /etc/pacman.d/mirrorlist.pacnew"
請確保用你要的參數代替 reflector 。
Systemd service
下面是服務單元等待網路連線後再執行 reflector 的例子:
/etc/systemd/system/reflector.service
[Unit] Description=Pacman mirrorlist update Wants=network-online.target After=network-online.target [Service] Type=oneshot ExecStart=/usr/bin/reflector --protocol https --latest 30 --number 20 --sort rate --save /etc/pacman.d/mirrorlist [Install] RequiredBy=multi-user.target
啟動 reflector.service
將更新鏡像列表。要在每次開機時更新鏡像列表,請 啟用 此服務。
註記: 關於更多網路依賴的實現,請參閱 Systemd#Running services after the network is up 。
Systemd timer
假如你想每週執行 reflector.service
,請建立一個相關的 .timer 。舉例來說:
/etc/systemd/system/reflector.timer
[Unit] Description=Run reflector weekly [Timer] OnCalendar=Mon *-*-* 7:00:00 RandomizedDelaySec=15h Persistent=true [Install] WantedBy=timers.target
然後直接 啟動 reflector.timer
。