镜像

出自 ArchWiki
(重定向自Mirror

本页面是关于选择和配置镜像的指南,并列出了当前可用的镜像列表。

官方镜像

官方 Arch Linux 镜像列表可从 pacman-mirrorlist 软件包获取。要获取更及时的镜像列表,请使用 Pacman 镜像列表生成器 页面。

通过访问 镜像状态 页面检查镜像的状态。建议仅使用最新的镜像,即未同步的镜像。

如果您希望将您的镜像添加到官方列表,请参阅 DeveloperWiki:NewMirrors。在此期间,请将其添加到 非官方镜像 文章中。

支持 IPv6 的镜像

Pacman 镜像列表生成器 也可用于查找当前 IPv6 镜像的列表。

启用特定镜像

要启用镜像,请编辑 /etc/pacman.d/mirrorlist 并找到您的地理区域。取消注释您想要使用的镜像。

例如

## Worldwide
#Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch
#Server = http://mirror.rackspace.com/archlinux/$repo/os/$arch
Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch

请参阅 #镜像排序 以获取帮助选择镜像的工具。

提示: 取消注释 5 个您常用的镜像,并将它们放在 mirrorlist 文件的顶部。这样可以很容易地找到它们,并在列表中的第一个镜像出现问题时移动它们。这也使得合并 mirrorlist 更新更容易。

也可以在 /etc/pacman.conf 中指定镜像。对于 core 仓库,默认设置为

[core]
Include = /etc/pacman.d/mirrorlist

要使用 kernel.org 镜像作为默认镜像,请将其添加到 Include 行之前

[core]
Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch
Include = /etc/pacman.d/mirrorlist

pacman 现在将首先尝试连接到此镜像。如果适用,对 core-testingextraextra-testing 执行相同的操作。

警告: 如果已在 pacman.conf 中直接声明了镜像,请记住对所有仓库使用相同的镜像。否则,这将导致 部分升级,因为可能会安装彼此不兼容的软件包,例如来自 corelinux 和来自 extra 的旧内核模块。

强制 pacman 刷新软件包列表

镜像可能会不同步,旧镜像的软件包列表可能与新镜像的软件包列表不对应,即使列表的日期可能表明它们是对应的。

在创建/编辑 /etc/pacman.d/mirrorlist 后,执行以下命令

# pacman -Syyu

传递两个 --refresh/-y 标志会强制 pacman 刷新所有软件包列表,即使它们被认为是最新的。

注意: 在大多数情况下,执行 pacman -Syyu 是不必要的带宽浪费,但有时可以解决从损坏的镜像切换到工作镜像时出现的问题。另请参阅 Is -Syy safe?
警告: 在大多数情况下,如果您强制刷新 pacman 数据库,您将需要强制降级任何可能过新的软件包,以使其与新镜像提供的版本相对应。这可以防止软件包升级不一致导致的部分更新问题。
# pacman -Syyuu

当使用 成功同步的镜像 或检查镜像 lastsync 文件的时间戳以确保软件包列表是最新的时,则不需要这样做。

镜像排序

下载软件包时,pacman 按照镜像在 /etc/pacman.d/mirrorlist 中列出的顺序使用镜像。服务器在列表中出现的顺序设置了它们的优先级。

仅根据速度对镜像进行排名并非最佳做法,因为最快的服务器可能不同步。相反,制作一个按 速度 排序的镜像列表,然后从列表中删除根据其 状态 不同步的镜像。

建议定期重复此过程,以保持镜像列表的最新状态。

按速度排序

对现有镜像列表进行排序

pacman-contrib 软件包提供了一个 Bash 脚本 /usr/bin/rankmirrors,该脚本可用于根据镜像的连接和打开速度对镜像进行排名,从而利用最快的本地镜像。

备份现有的 /etc/pacman.d/mirrorlist

# cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup

要准备 mirrorlist.backup 以使用 rankmirrors 进行排名,可以执行以下操作

  • 编辑 mirrorlist.backup 并取消注释要测试的服务器
  • 如果文件中的服务器按国家/地区分组,则可以使用以下命令提取特定国家/地区的所有服务器
    $ awk '/^## Country Name$/{f=1; next}f==0{next}/^$/{exit}{print substr($0, 1);}' /etc/pacman.d/mirrorlist.backup
  • 要取消注释每个镜像,请运行以下 sed
    # sed -i 's/^#Server/Server/' /etc/pacman.d/mirrorlist.backup
  • 最后,对镜像进行排名,此处使用操作数 -n 6 仅输出 6 个最快的镜像
    # rankmirrors -n 6 /etc/pacman.d/mirrorlist.backup > /etc/pacman.d/mirrorlist

获取并排序实时镜像列表

为了从一些国家/地区最新的镜像简短列表开始,并将其提供给 rankmirrors,可以从 Pacman 镜像列表生成器 获取列表。以下命令提取位于 法国英国 并支持 https 协议的最新镜像,它取消注释列表中的服务器,然后对其进行排名并输出 5 个最快的镜像。

$ curl -s "https://archlinux.org.cn/mirrorlist/?country=FR&country=GB&protocol=https&use_mirror_status=on" | sed -e 's/^#Server/Server/' -e '/^#/d' | rankmirrors -n 5 -
提示: 此过程可以通过使用任何基于文本的浏览器(例如 elinks(1))导航到 https://archlinux.org.cn/mirrorlist 来交互式完成。

现有工具

Rate Mirrors — 它获取镜像,跳过过时/同步中的镜像,然后使用有关海底电缆和互联网交换的信息在国家/地区之间跳转并查找快速镜像。它足够快,可以在每次更新之前运行。它还支持通过 stdin 馈送的自定义镜像列表。
https://github.com/westandskif/rate-mirrors || rate-mirrorsAUR

服务器端排序

官方 Pacman 镜像列表生成器 提供了一种获取排名镜像列表的简便方法。由于所有排名都在单个服务器上完成,该服务器考虑了多个因素,因此与在每个客户端上进行排名相比,镜像和客户端上的负载显着降低。

另一个流行的替代工具是以下工具

  • ghostmirror — 与其他镜像软件不同,GhostMirror 检查镜像是否同步,除了简单的 ping 测试外,还执行实际的下载速度测试,通过 systemd 自动化一切,如果配置正确,您可以告别手动镜像管理。
https://github.com/vbextreme/ghostmirror || ghostmirrorAUR
  • Reflector — 从 MirrorStatus 页面检索最新的镜像列表,按速度对其进行过滤和排序,并覆盖 /etc/pacman.d/mirrorlist。通过 systemd 服务和计时器提供自动化。
https://xyne.dev/projects/reflector/ || reflector
  • mirro-rs — 带有 TUI 的 Arch Linux 镜像列表管理器。
https://github.com/rtkay123/mirro-rs || mirro-rs
  • rate-mirrors — 日常使用的客户端地图感知镜像排名工具。
https://github.com/westandskif/rate-mirrors || rate-mirrorsAUR
  • shiny-mirrors — Reflector 的替代品,用 Rust 编写。
https://gitlab.com/Arisa_Snowbell/shiny-mirrors || shiny-mirrorsAUR

故障排除

缺少镜像列表

本文或章节需要扩充。

原因: 镜像列表也通过 pacman-mirrorlist 分发,因此目录中应该有 mirrorlist.pacnew,如果没有,您可以重新安装软件包,并且镜像列表将被安装,因为它不再存在,这比使用 curl 更简单。(在 Talk:Mirrors 中讨论)

如果您遇到以下错误

error: config file /etc/pacman.d/mirrorlist could not be read: No such file or directory

直接从网站获取镜像列表

# curl -o /etc/pacman.d/mirrorlist https://archlinux.org.cn/mirrorlist/all/

请务必取消注释首选镜像,如 #启用特定镜像 中所述,然后

# pacman -Syu pacman-mirrorlist

行为异常的镜像

如果您确定某个镜像运行不正常,并且这未在 镜像状态页面 上反映出来,请更改镜像并考虑 提交错误报告。对于镜像,应在 Arch Linux GitLab 上的 arch-mirrors 项目 中打开问题。您也可以发送邮件至 mirrors@archlinux.org

参见