Powerpill
Powerpill は並列・分割ダウンロードをすることで Pacman のダウンロードを高速化する Pacman ラッパーです。内部的には Aria2 と Reflector を使ってダウンロードの高速化をしています。Rsync をサポートしている公式ミラーなら Powerpill で Rsync を使うこともできます。単一のミラーからダウンロードするときに最大帯域を使いきっているユーザーなら効果的です。設定ファイルによって Pacserve もサポートされており、外部のミラーからダウンロードする前に使用することができます。例: アップデートをしようとして pacman -Syu を実行したらアップデートできるパッケージが20個、合計で200メガバイトだと表示された場合。pacman でダウンロードする場合、パッケージは1つずつ落ちてきます。powerpill でダウンロードすると、同時にダウンロードされるため数倍は高速です (実際の速度はユーザーの接続速度やサーバーの負担や速度などにより変わります)。
pacman と powerpill でダウンロード速度を比較すると、上記の例なら4倍近く差が出ることもあります。つまり pacman が 300 kB/秒でダウンロードするところを powerpill は平均 1.2 MB/秒でダウンロードできるわけです。
目次
インストール
AUR の powerpillAUR か Xyne のリポジトリ から直接インストールできます。
設定
Powerpill の設定ファイルは /etc/powerpill/powerpill.json
一つだけで自由に編集できます。詳しくは powerpill.json man ページを参照してください。
Reflector を使う
デフォルトで、Powerpill は Reflector を使って Arch Linux のウェブ API からミラーの最新リストを取得して並行ダウンロードするように設定されています。リストに十分なサーバーがあることを確認することで劇的にダウンロード速度を改善します。
rsync を使う
ミラーによっては Rsync のサポートが利用可能です。有効にすると、単一の接続が使われるようになるため、データベースの同期 (pacman -Sy
) などの操作が圧倒的に高速になります。rsync プロトコル自体もアップデートのチェックやファイルの転送の高速化に一役買っています。
rsync サポートが利用できるミラーを探すときは、reflector を使います:
$ reflector -p rsync
また、reflector を使って最速のサーバーを n 個 (オプション -f
)、最新のサーバーを m 個 (オプション -l
)、抽出することもできます:
$ reflector -p rsync -f n -l m
使用したいミラーを選択してください。-c
オプションを使うことで国別に選ぶことができます (完全なリストは reflector --list-countries
を見て下さい、名前はクォートで囲みます、大文字と小文字を区別するので注意してください)。完了したら、/etc/powerpill/powerpill.json
を編集して、rsync セクションを見つけて、サーバーフィールドに使いたいサーバーを追加してください。
上記の設定後、可能であれば rsync サーバーから公式データベースやパッケージが全てダウンロードされるようになります。
基本的な使い方
powerpill は pacman のラッパースクリプトなので、ほとんどの操作は pacman と同じように動作します。
システムのアップデート
powerpill を使ってシステムをアップデート (インストールされているパッケージの同期と更新) するには、pacman と同じように -Syu
オプションを使います:
# powerpill -Syu
パッケージのインストール
パッケージとその依存パッケージをインストールするには、pacman と同じように powerpill に -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
詳しくは Arch フォーラムの投稿 を参照。
参照
- Powerpill - 公式プロジェクトページ
- powerpill reborn - powerpill is back :)