在 Arch Linux 中维护最新的镜像列表有一些好处。 如果您使用更新的镜像列表,您可以轻松避免下载速度缓慢以及安装和更新软件包时出现超时错误消息。 本教程解释了什么是 反射器 以及如何使用 Reflector 在 Arch Linux 中检索最新的镜像列表。
内容
什么是反射器?
反射器 是一个简单的 Python 3 模块和脚本,用于检查和检索按速度排序的最新镜像列表 镜像状态 页面,并将它们保存在 /etc/pacman.d/mirrorlist
Arch Linux 系统中的文件。
一般情况下 /etc/pacman.d/mirrorlist
文件将包含每个国家/地区的一个镜像服务器。 然而,每个国家应该不止一台服务器,但镜像列表文件通常只有一台。
那么,您如何在 Arch Linux 中添加或检索您选择的最新和更新到日期的镜像列表? 这是哪里 反射器 来帮忙。
Reflector 将根据速度、国家和年龄(上次服务器同步)检索和过滤最新和最快的 Arch Linux 镜像列表。
Reflector 是免费的开源 Python 脚本,它在 Arch Linux 及其衍生产品(如 EndeavourOS 和 Manjaro Linux)上运行良好。
1. 在 Arch Linux、EndeavourOS、Manjaro 中安装 Reflector
要在 Arch Linux 及其变体(例如 EndeavourOS 和 Manjaro)中安装 Reflector,请从终端运行以下命令:
$ sudo pacman -S reflector rsync curl
上面的命令将安装 Reflector 及其依赖项 rsync 和 curl 包。
2. 在 Arch Linux 中使用 Reflector 获取最新的镜像列表
2.1. 备份当前镜像列表
在运行 Reflector 之前,您必须备份您的默认镜像列表文件。 因为,Reflector 会覆盖它并用新的镜像列表替换现有的镜像列表。
要备份当前镜像列表,请运行:
$ sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
2.2. 检索最新的N个镜像并按下载率排序
让我们检索前 20 个最新镜像并按下载率排序镜像列表,并将它们保存在 /etc/pacman.d/mirrorlist
文件使用命令:
$ sudo reflector --latest 20 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
请注意,这将用新镜像替换现有镜像。
让我们分解上面的命令,看看每个选项的作用。
--latest 20
– 获取最近同步的服务器--protocol https
– 取回https
启用的镜像--sort rate
– 根据下载速度对镜像列表进行排序--save /etc/pacman.d/mirrorlist
——
您可以通过列出内容来验证它 /etc/pacman.d/mirrorlist
文件。
$ cat /etc/pacman.d/mirrorlist
示例输出:
##################################################################### ########### Arch Linux mirrorlist generated by Reflector ########### ##################################################################### With: reflector --latest 20 --protocol https --sort rate --save /etc/pacman.d/mirrorlist When: 2021-06-10 09:51:51 UTC From: https://www.archlinux.org/mirrors/status/json/ Retrieved: 2021-06-10 09:49:34 UTC Last Check: 2021-06-10 09:15:02 UTC Server = https://mirror.osbeck.com/archlinux/$repo/os/$arch Server = https://asia.mirror.pkgbuild.com/$repo/os/$arch Server = https://archlinux.thaller.ws/$repo/os/$arch Server = https://arch.mirror.constant.com/$repo/os/$arch Server = https://mirror.f4st.host/archlinux/$repo/os/$arch Server = https://phinau.de/arch/$repo/os/$arch Server = https://mirrors.neusoft.edu.cn/archlinux/$repo/os/$arch Server = https://mirror.pseudoform.org/$repo/os/$arch Server = https://arch.mirror.square-r00t.net/$repo/os/$arch Server = https://mirror.pkgbuild.com/$repo/os/$arch Server = https://archlinux.uk.mirror.allworldit.com/archlinux/$repo/os/$arch Server = https://archlinux.za.mirror.allworldit.com/archlinux/$repo/os/$arch Server = https://mirror.telepoint.bg/archlinux/$repo/os/$arch Server = https://mirror.lty.me/archlinux/$repo/os/$arch Server = https://mirror.chaoticum.net/arch/$repo/os/$arch Server = https://mirror.efect.ro/archlinux/$repo/os/$arch Server = https://archmirror.it/repos/$repo/os/$arch Server = https://archlinux.mailtunnel.eu/$repo/os/$arch Server = https://archlinux.qontinuum.space:4443/$repo/os/$arch Server = https://ftp.halifax.rwth-aachen.de/archlinux/$repo/os/$arch
现在,您可以从最新的镜像安装、更新和升级软件包。
$ sudo pacman -Syu
$ sudo pacman -S <package_name>
2.3. 检索最新的N个镜像并按年龄排序
要检索顶级镜像并按它们的年龄(即上次服务器同步)对它们进行排序,请运行:
$ sudo reflector --latest 20 --protocol https --sort age --save /etc/pacman.d/mirrorlist
2.4. 检索特定国家的镜像列表
您还可以将镜像限制在选定的国家/地区。 例如,如果您住在印度,您可能只想使用来自印度的服务器更新镜像列表。
要列出全球所有可用的 Arch Linux 镜像,请运行:
$ reflector --list-countries
示例输出:
Country Code Count
---------------------- ---- -----
Australia AU 19
Austria AT 6
Bangladesh BD 1
Belarus BY 4
Belgium BE 3
Bosnia and Herzegovina BA 2
Brazil BR 11
Bulgaria BG 11
Canada CA 20
Chile CL 8
[...]
正如你在上面的输出中看到的,reflector 列出了世界上可用的镜子以及国家代码和每个国家的镜子数量。
在撰写本指南时,最多的 Arch Linux 镜像位于 美国 (134 镜子), 德国 (114) 和 荷兰 (51)。
要从特定国家/地区检索镜像,您可以使用国家/地区名称或国家/地区代码,或两者的组合。
以下命令将从中检索前 5 个镜像 印度,按下载速度排序,保存到mirrorlist文件中。
$ sudo reflector --verbose --country 'India' -l 5 --sort rate --save /etc/pacman.d/mirrorlist
以下是上述命令中这些标志的作用的简要总结。
--verbose
– 打印比正常情况更多的信息。--country India
– 我首选的镜像位置。--l 5
– 检索印度的前五名镜子。--sort rate
– 按下载率排序。--save
– 将下载的镜像列表保存到/etc/pacman-d/mirrorlist
.
让我们使用命令验证更新的镜像列表:
$ cat /etc/pacman.d/mirrorlist
示例输出:
################################################################################ ################# Arch Linux mirrorlist generated by Reflector ######################### ################################################################################ # With: reflector --verbose --country India -l 5 --sort rate --save /etc/pacman.d/mirrorlist # When: 2021-06-10 10:27:06 UTC # From: https://www.archlinux.org/mirrors/status/json/ # Retrieved: 2021-06-10 10:26:49 UTC # Last Check: 2021-06-10 09:15:02 UTC Server = https://mirrors.piconets.webwerks.in/archlinux-mirror/$repo/os/$arch Server = https://mirrors.piconets.webwerks.in/archlinux-mirror/$repo/os/$arch Server = https://mirror.cse.iitk.ac.in/archlinux/$repo/os/$arch
不幸的是,印度只有三个 Arch Linux 镜像可用。
2.5. 从多个国家检索镜像列表
您还可以使用逗号分隔指定多个国家,如下所示。
$ sudo reflector --country 'United States,India' -l 10 --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
此命令将选择顶部 10 个 HTTPS 镜像 内同步 过去 12 小时 并且位于 美国 或者 印度,按下载速度排序,并覆盖文件 /etc/pacman.d/mirrorlist
文件。
2.6. 检索国家排序的镜像列表
要获取所有国家/地区排序列表,请运行以下命令:
$ sudo curl -o /etc/pacman.d/mirrorlist https://archlinux.org/mirrorlist/all/
检索国家排序的镜像后,编辑您的 /etc/pacman.d/mirrorlist
文件:
$ sudo nano /etc/pacman.d/mirrorlist
取消注释您选择的镜像 URL 以启用它。
例如,我启用了来自印度的镜像。 因此,我删除了每个 URL 前面的 (#) 符号。
[...] India Server = https://mirror.cse.iitk.ac.in/archlinux/$repo/os/$arch Server = https://mirrors.piconets.webwerks.in/archlinux-mirror/$repo/os/$arch Server = https://mirrors.piconets.webwerks.in/archlinux-mirror/$repo/os/$arch [...]
Save 和 close 文件。 使用命令更新存储库列表:
$ sudo pacman -Syu
2.7. 选择最快的镜像
Reflector 可以为您的 Arch Linux 检索最快的镜像。
以下命令检索 5 个最快的 10 个 HTTPS 镜像 位于 美国,按下载速度排序,并覆盖文件 /etc/pacman.d/mirrorlist
文件。
$ sudo reflector -f 5 --country 'United States' --protocol https --sort rate --save /etc/pacman.d/mirrorlist
2.8. 指定协议
您可以选择支持特定类型协议的最新镜像,例如 https
, http
, ftp
等等。
例如,此命令将选择 5 最新的镜像来自 美国 那个支持 HTTP
并覆盖 /etc/pacman.d/mirrorlist
文件:
$ sudo reflector --latest 5 --protocol http --country 'United States' --save /etc/pacman.d/mirrorlist
其他支持的选项是 --isos
它只会返回承载 ISO 的镜像, --ipv4
只会返回支持 IPv4 的镜像,并且 --ipv6
只返回支持 IPv6 的镜像。
3. 开机自动更新 Arch Linux 镜像列表
反射器包括 systemd
可用于自动更新 Pacman 镜像列表的服务和计时器单元。
3.1. 启用并启动反射器 systemd 服务
从版本 2020.8 开始,Reflector 附带 reflector.service
. 要在每次重新启动时自动更新您的 Arch Linux 镜像列表,只需使用以下命令启用并启动此服务:
$ sudo systemctl enable reflector.service
$ sudo systemctl start reflector.service
reflector.service 将使用指定的参数运行反射器 /etc/xdg/reflector/reflector.conf
文件。
大多数情况下,默认设置就足够了。 这是reflector.conf文件的内容:
$ cat /etc/xdg/reflector/reflector.conf
示例输出:
# # Empty lines and lines beginning with "#" are ignored. All other lines should # contain valid reflector command-line arguments. The lines are parsed with # Python's shlex modules so standard shell syntax should work. All arguments are # collected into a single argument list. # # See "reflector --help" for details. # Recommended Options # Set the output path where the mirrorlist will be saved (--save). --save /etc/pacman.d/mirrorlist # Select the transfer protocol (--protocol). --protocol https # Select the country (--country). # Consult the list of available countries with "reflector --list-countries" and # select the countries nearest to you or the ones that you trust. For example: # --country France,Germany # Use only the most recently synchronized mirrors (--latest). --latest 5 # Sort the mirrors by synchronization time (--sort). --sort age
您还可以编辑此文件并根据您的要求更改参数。 此文件接受所有反射器命令行参数。
您可以将参数组合在一行中或分成多行,可选的空行和注释行以 #
.
3.2. 启用并启动反射器 systemd 计时器
Reflector 附带了另一个名为的 systemd 单元 reflector.timer
, 开始 reflector.service
每周。
要在系统启动时自动启用并启动它,请一一运行以下命令:
$ sudo systemctl enable reflector.timer
$ sudo systemctl start reflector.timer
默认情况下,它将启动 reflector.service
一周一次。 如果不想等待预定时间,可以启动reflector.service立即更新pacman的镜像列表:
$ sudo systemctl start reflector.service
结论
在本指南中,我们了解了什么是 Reflector,如何使用 Reflector 脚本为您的 Arch Linux 系统检索最新的 Pacman 镜像列表,以及如何自动更新 Arch Linux 镜像列表。
资源:
- 反射器维基
相关阅读:
- 在 Arch Linux 中清理包缓存的推荐方法
- 在 Arch Linux 的 Pacman 中启用并行下载
Arch LinuxArch Linux 镜像列表EndeavourOSLinuxLinux basicsLinux howtoManjaro Linux镜像列表包管理包管理器PacmanPythonReflector