Powerpill

来自 Arch Linux 中文维基

本文内容或本节内容已经过期。

原因: 本页是在 pacman 原生支持并行下载之前编写的,并且应该提到,由于 pacman v6 版本,这不再是一次下载多个软件包的唯一选项。 (在Talk:Powerpill讨论)

Powerpill 是一个 pacman 包装,它使用并行和分段下载来加速 Pacman 的下载。内部使用 Aria2Reflector 来实现这一点。Powerpill 还可以将 rsync 用于支持它的官方镜像。对于从单镜像下载时已经使用全部带宽的用户来说非常有效。配置文件也支持 Pacserve,并将在从外部镜像下载之前使用。示例:有人想要更新然后运行了 pacman -Syu,它返回一个包含20个包的列表用于更新,总计200兆。如果用户通过 pacman 下载,它们将一次下载一个。如果用户通过 powerpill 下载,它们将同时下载,许多情况下所需时间会下降几倍(取决于一个人的连接速度、服务器上软件包的可用性以及服务器/负载的速度等。)

在一个系统上对 pacman 和 powerpill 进行的对比测试表明,在上述场景中,pacman 的下载速度平均为 300 kB/sec,powerpill 的下载速度平均为 1.2 MB/sec,速度提高了4倍。

安装[编辑 | 编辑源代码]

安装 powerpillAUR 软件包。

配置[编辑 | 编辑源代码]

Powerpill 有一个单独配置文件 /etc/powerpill/powerpill.json,你可以按喜好进行编辑。参考 powerpill.json(1) 手册页获取详细信息。

使用 Reflector[编辑 | 编辑源代码]

默认情况下,Powerpill 配置为使用 Reflector 从 Arch Linux 服务器的 web API 检索当前镜像列表,并将其用于并行下载。这是为了确保列表中有足够的服务器以显著提高速度。

使用 rsync[编辑 | 编辑源代码]

一些镜像可以支持 Rsync。在启用后,因为使用单连接,数据库同步 (pacman -Sy) 和其它操作可能会快得多。rsync 协议本身也加速了更新检查,有时还加速了文件传输。

要找到支持 rsync 的镜像,使用 reflector:

$ reflector -p rsync

另外,你可以使用标志 -f n 以获得 n 个最快的服务器,和使用标志 -l m 以获得 m 个最新同步的服务器:

$ reflector -p rsync -f n -l m

选择你想使用的镜像。-c 选项可以按国家进行筛选(使用 reflector --list-countries 查看全部列表,在名称周围加引号并注意大小写!)。完成后,编辑 /etc/powerpill/powerpill.json,向下滚动到 rsync 部分,并向 servers 字段添加任意数量的服务器。

之后,所有官方数据库和软件包将尽可能从 rsync 服务器下载。

注意,需要检查数据库和包是否位于带 reflector 的官方存储库中,因此安装 reflector 是 rsync 功能运行所必需的。

基本使用[编辑 | 编辑源代码]

对于大多数操作,powerpill 与 pacman 的工作方式差不多,因为它是 pacman 的包装脚本。

系统更新[编辑 | 编辑源代码]

想要使用 powerpill 更新你的系统(同步并更新所有安装的包),和 pacman 一样使用菜单项 -Syu:

# powerpill -Syu

安装软件包[编辑 | 编辑源代码]

想要安装软件包和它的依赖,和 pacman 一样使用菜单项 -S:

# powerpill -S package

安装多个软件包时也和使用 pacman 一样:

# powerpill -S package1 package2 package3

疑难解答[编辑 | 编辑源代码]

如果你得到 <repo>.db.sig 文件的 [err]:

   b5d7d7|ERR |       0B/s|/var/lib/pacman/sync/extra.db.sig
   899e91|ERR |       0B/s|/var/lib/pacman/sync/multilib.db.sig
   8fcc32|ERR |       0B/s|/var/lib/pacman/sync/core.db.sig
   85eb3d|ERR |       0B/s|/var/lib/pacman/sync/community.db.sig

这是因为该存储库缺少签名文件,而且你还没有在 /etc/pacman.conf 中显式设置

SigLevel = PackageRequired

,更多说明请见这个帖子

参考[编辑 | 编辑源代码]