跳转至内容

镜像

来自 ArchWiki

此页面是关于选择和配置您的镜像,以及当前可用镜像列表的指南。

官方镜像

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

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

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

支持 IPv6 的镜像

可以使用 Pacman 镜像列表生成器 来查找当前 IPv6 镜像的列表。

支持通过 TLS 进行 rsync 的镜像

镜像列表生成器页面没有支持通过 TLS 进行 rsync 的镜像的筛选器:它们列在下面。 *.pkgbuild.com 由 Arch Linux 团队自行管理,而其他则由社区贡献。有关设置镜像的更多信息,请参阅 DeveloperWiki:NewMirrors

  • rsync://berlin.mirror.pkgbuild.com/packages/ - Arch Linux Germany geomirror
  • rsync://frankfurt.mirror.pkgbuild.com/packages/ - Arch Linux Germany geomirror
  • rsync://singapore.mirror.pkgbuild.com/packages/ - Arch Linux Singapore geomirror
  • rsync://johannesburg.mirror.pkgbuild.com/packages/ - Arch Linux South Africa geomirror
  • rsync://umea.mirror.pkgbuild.com/packages/ - Arch Linux Sweden geomirror
  • rsync://taipei.mirror.pkgbuild.com/packages/ - Arch Linux Taiwan geomirror
  • rsync://london.mirror.pkgbuild.com/packages/ - Arch Linux United kingdom geomirror
  • rsync://losangeles.mirror.pkgbuild.com/packages/ - Arch Linux USA geomirror

启用特定镜像

要启用镜像,请编辑 /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 文件的 timestamp 以确保软件包列表是最新的情况下,这不是必需的。

排序镜像

下载软件包时,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

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

  • 编辑 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
  • mirro-rs — 一个带有 TUI 的 Arch Linux 镜像列表管理器。
https://github.com/rtkay123/mirro-rs || mirro-rs
  • rate-mirrors — 日常使用的客户端地图感知镜像排序工具。
https://github.com/westandskif/rate-mirrors || rate-mirrorsAUR
  • Reflector — 从 MirrorStatus 页面检索最新的镜像列表,按速度过滤和排序,并覆盖 /etc/pacman.d/mirrorlist。通过 systemd 服务和定时器提供自动化。
https://xyne.dev/projects/reflector/ || reflector
  • shiny-mirrors — Reflector 的一个替代品,用 Rust 编写。
https://gitlab.com/Arisa_Snowbell/shiny-mirrors || shiny-mirrorsAUR

故障排除

镜像列表缺失

如果您遇到以下错误

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/

请确保按照 #启用特定镜像 中的描述取消注释您偏好的镜像。

或者,使用 #排序镜像 下列出的生成镜像列表的方法之一。

运行不正常的镜像

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

Pacman 从 HTTP 镜像检索软件包失败

请先参阅 Pacman#Packages cannot be retrieved on installation。如果无效,请使用 HTTPS 镜像。

参见