在 Arch Linux 中使用 Reflector 检索最新的镜像列表

在 Arch Linux 中维护最新的镜像列表有一些好处。 如果您使用更新的镜像列表,您可以轻松避免下载速度缓慢以及安装和更新软件包时出现超时错误消息。 本教程解释了什么是 反射器 以及如何使用 Reflector 在 Arch Linux 中检索最新的镜像列表。

内容

  1. 什么是反射器?
  2. 1. 在 Arch Linux、EndeavourOS、Manjaro 中安装 Reflector
  3. 2. 在 Arch Linux 中使用 Reflector 获取最新的镜像列表
    1. 3. 开机自动更新 Arch Linux 镜像列表
    2. 结论

什么是反射器?

反射器 是一个简单的 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
在 Arch Linux 中查看 Pacman 镜像列表

现在,您可以从最新的镜像安装、更新和升级软件包。

$ 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
[...]
Arch Linux 中按国家/地区排序的镜像列表

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