镜像
本页面是关于选择和配置镜像的指南,并列出了当前可用的镜像列表。
官方镜像
官方 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
请参阅 #镜像排序 以获取帮助选择镜像的工具。
也可以在 /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-testing、extra 和 extra-testing 执行相同的操作。
pacman.conf
中直接声明了镜像,请记住对所有仓库使用相同的镜像。否则,这将导致 部分升级,因为可能会安装彼此不兼容的软件包,例如来自 core 的 linux 和来自 extra 的旧内核模块。强制 pacman 刷新软件包列表
镜像可能会不同步,旧镜像的软件包列表可能与新镜像的软件包列表不对应,即使列表的日期可能表明它们是对应的。
在创建/编辑 /etc/pacman.d/mirrorlist
后,执行以下命令
# pacman -Syyu
传递两个 --refresh
/-y
标志会强制 pacman 刷新所有软件包列表,即使它们被认为是最新的。
pacman -Syyu
是不必要的带宽浪费,但有时可以解决从损坏的镜像切换到工作镜像时出现的问题。另请参阅 Is -Syy safe?。# 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 -
现有工具
- Rate Mirrors — 它获取镜像,跳过过时/同步中的镜像,然后使用有关海底电缆和互联网交换的信息在国家/地区之间跳转并查找快速镜像。它足够快,可以在每次更新之前运行。它还支持通过 stdin 馈送的自定义镜像列表。
- https://github.com/westandskif/rate-mirrors || rate-mirrorsAUR
服务器端排序
官方 Pacman 镜像列表生成器 提供了一种获取排名镜像列表的简便方法。由于所有排名都在单个服务器上完成,该服务器考虑了多个因素,因此与在每个客户端上进行排名相比,镜像和客户端上的负载显着降低。
另一个流行的替代工具是以下工具
- ghostmirror — 与其他镜像软件不同,GhostMirror 检查镜像是否同步,除了简单的 ping 测试外,还执行实际的下载速度测试,通过 systemd 自动化一切,如果配置正确,您可以告别手动镜像管理。
- Reflector — 从 MirrorStatus 页面检索最新的镜像列表,按速度对其进行过滤和排序,并覆盖
/etc/pacman.d/mirrorlist
。通过 systemd 服务和计时器提供自动化。
- mirro-rs — 带有 TUI 的 Arch Linux 镜像列表管理器。
- rate-mirrors — 日常使用的客户端地图感知镜像排名工具。
- shiny-mirrors — Reflector 的替代品,用 Rust 编写。
故障排除
缺少镜像列表
如果您遇到以下错误
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。
参见
- GitHub archweb mirrorlist.py - archweb 镜像列表生成器的源代码