Powerpill

提供: ArchWiki
ナビゲーションに移動 検索に移動

Powerpill は並列・分割ダウンロードをすることで Pacman のダウンロードを高速化する Pacman ラッパーです。内部的には Aria2Reflector を使ってダウンロードの高速化をしています。Rsync をサポートしている公式ミラーなら Powerpill で Rsync を使うこともできます。単一のミラーからダウンロードするときに最大帯域を使いきっているユーザーなら効果的です。設定ファイルによって Pacserve もサポートされており、外部のミラーからダウンロードする前に使用することができます。例: アップデートをしようとして pacman -Syu を実行したらアップデートできるパッケージが20個、合計で200メガバイトだと表示された場合。pacman でダウンロードする場合、パッケージは1つずつ落ちてきます。powerpill でダウンロードすると、同時にダウンロードされるため数倍は高速です (実際の速度はユーザーの接続速度やサーバーの負担や速度などにより変わります)。

pacman と powerpill でダウンロード速度を比較すると、上記の例なら4倍近く差が出ることもあります。つまり pacman が 300 kB/秒でダウンロードするところを powerpill は平均 1.2 MB/秒でダウンロードできるわけです。

インストール

AURpowerpillAURXyne のリポジトリ から直接インストールできます。

設定

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 サーバーから公式データベースやパッケージが全てダウンロードされるようになります。

基本的な使い方

powerpillpacman のラッパースクリプトなので、ほとんどの操作は 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 フォーラムの投稿 を参照。

参照