Reflector (简体中文)
Reflector 是一个 Python 脚本;它可以从 Arch Linux Mirror Status 页面获取最新的镜像列表,然后筛选出最新的镜像并按速度排序,最后将结果写入到 /etc/pacman.d/mirrorlist
文件。
安装
用法
- 在下面的例子中,会覆盖
/etc/pacman.d/mirrorlist
文件。进行操作前应该进行备份。 - 在同步或更新 pacman 前,需要确保
/etc/pacman.d/mirrorlist
文件没有包含你不信任的镜像。
要查看所有可用命令,运行以下命令:
$ reflector --help
示例
根据下载速度进行排序,并筛选出前 5 个最近同步的镜像,最后将结果覆写到 /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 小时内同步的,并且是位于法国或德国的镜像,然后根据下载速度进行排序,最后将结果覆写到 /etc/pacman.d/mirrorlist
文件内:
# reflector --country France --country Germany --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
自动处理
systemd service
从 2020.9 版本开始,Reflector 附带了一个可启用的 reflector.service
服务文件。
该服务会根据 /etc/xdg/reflector/reflector.conf
文件所指定的参数运行 Reflector 脚本。该配置文件包含了 Reflector 运行时所需的所有命令行参数。这些参数可以用一行或者多行来表示,并且允许空白行和以 #
开头的注释行。可以从默认配置文件开始进行自定义配置。
例如,从法国和德国的镜像中筛选出 5 个最新的并且支持 HTTPS 的镜像,然后将结果覆写到 /etc/pacman.d/mirrorlist
文件内;使用:
/etc/xdg/reflector/reflector.conf
--save /etc/pacman.d/mirrorlist --country France,Germany --protocol https --latest 5
启用 reflector.service
服务可以在引导时运行 Reflector 脚本。要立即运行,启动该服务。
systemd timer
从 2020.8 版本开始,Reflector 提供一个 systemd timer (reflector.timer
) 定时器,这样每周都会调用 reflector.service
服务。可以编辑 reflector.timer
来调整时间表。
首先像服务一节那样编辑好配置文件。配置文件更新后,启用或启动 reflector.timer
定时器。
要提前刷新镜像列表,启动 reflector.service
服务。
pacman hook
你可以创建一个 pacman 挂钩来启动 reflector.service
服务,并且在更新 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 'systemctl start reflector.service; if [ -f /etc/pacman.d/mirrorlist.pacnew ]; then rm /etc/pacman.d/mirrorlist.pacnew; fi'
像服务一节所说那样编辑 /etc/xdg/reflector/reflector.conf
文件,从而设置好所需的镜像选项。
Cron task
要每天更新镜像列表,参考如下内容:
/etc/cron.daily/mirrorlist
#!/bin/bash # Get the country thing /usr/bin/reflector -c "India" -p http --sort rate > /etc/pacman.d/mirrorlist # Work through the alternatives /usr/bin/reflector -p http --latest 20 -p https -p ftp --sort rate >> /etc/pacman.d/mirrorlist