Pacman/ヒントとテクニック
以下のヒントや pacman 自体の柔軟性を広げる汎用的な手法については、Core Utilities や Bash を見てください。
目次
- 1 外観と利便性の向上
- 2 メンテナンス
- 3 インストールとリカバリー
- 3.1 パッケージを CD/DVD や USB スティックからインストールする
- 3.2 カスタムローカルリポジトリ
- 3.3 pacman のキャッシュをネットワークで共有する
- 3.4 インストールしたパッケージのリストのバックアップと復旧
- 3.5 base や base-devel に存在しないダウンロード済みパッケージを一覧
- 3.6 全てのパッケージの再インストール
- 3.7 pacman のローカルデータベースを復元する
- 3.8 既存のインストールから USB キーを回復させる
- 3.9 .pkg ファイルの中身を展開する
- 3.10 .pkg ファイルに含まれているファイルを回覧する
- 3.11 古いパッケージのライブラリを使っているアプリケーションを探す
- 4 パフォーマンス
外観と利便性の向上
グラフィカルフロントエンド
- Discover — KDE のパッケージ管理ツールのコレクション。PackageKit を使用。
- GNOME packagekit — GTK ベースのパッケージ管理ツール。
- GNOME Software — Gnome ソフトウェアアプリ (GNOME の精選ソフトウェアコレクション)。
- pcurses — curses フロントエンドのパッケージ管理ツール。
- tkPacman — Tcl/Tk と X11 にしか依存せず、CLI の pacman を使ってパッケージデータベースを操作できるソフトウェア。
ユーティリティ
- Arch-Update — Gnome-Shell のアップデートインジケータ。
- Lostfiles — 孤立したファイルを検知するスクリプト。
- Pacmatic — アップグレードの前に Arch ニュースをチェックして、設定ファイルの変更を警告する pacman ラッパ。
- Pactoys — リポジトリマネージャ・上流リリースの確認ツール・PKGBUILD の品質チェッカなどが含まれたユーティリティセット。
- https://github.com/renatosilva/pactoys || パッケージが存在しないか AUR で検索
- pacutils — libalpm ベースのプログラムのヘルパーライブラリ。
- pkgfile — あるファイルを使っているパッケージが何かを見つけるツール。
- pkgtools — Arch Linux パッケージ用のスクリプトコレクション。
- repoctl — ローカルリポジトリの管理を補助するツール。
- repose — Arch Linux リポジトリ作成ツール。
- srcpac — ソースからのパッケージのリビルドを自動化するシンプルなツール。
- snap-pac — openSUSE の YaST のように pacman で自動的に snapper のスナップショットを作成するツール。
メンテナンス
システムメンテナンスも参照。
パッケージをリストアップ
バグを報告したりインストールしたパッケージについて説明するときは、インストール済みのパッケージとそのバージョンのリストを貼り付けると便利です。
- 明示的にインストールしたパッケージを全てリストアップ:
pacman -Qe
。 - 依存パッケージではない、明示的にインストールしたネイティブのパッケージ (同期データベースに存在するパッケージ) を全てリストアップ:
pacman -Qent
。 - 外部からインストールしたパッケージ (手動でダウンロード・インストールしたパッケージ) をリストアップ:
pacman -Qm
。 - ネイティブなパッケージ (同期データベースからインストールしたパッケージ) をリストアップ:
pacman -Qn
。 - 正規表現でパッケージをリストアップ:
pacman -Qs regex
。 - 正規表現でカスタム出力形式を使ってパッケージをリストアップ:
expac -s "%-30n %v" regex
(expac が必要です)。
容量でソート
インストールしたパッケージのリストを容量で並び替えたい場合 (ハードドライブの空き容量を増やしたいときに有用):
複数のパッケージのダウンロード容量をリストアップするには (packages
を空にすると全てのパッケージの情報が出力されます):
$ expac -S -H M '%k\t%n' packages
base や base-devel に存在しない明示的にインストールしたパッケージの容量と説明をリストアップするには:
$ expac -H M "%011m\t%-20n\t%10d" $(comm -23 <(pacman -Qqen | sort) <(pacman -Qqg base base-devel | sort)) | sort -n
日付を使う
expac を使って最後にインストールした20のパッケージをリストアップするには、次のコマンドを実行:
$ expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort | tail -n 20
もしくはエポック秒を使って (1970-01-01 UTC):
$ expac --timefmt=%s '%l\t%n' | sort -n | tail -n 20
指定したグループやリポジトリに存在しないパッケージ
base や base-devel グループに存在しない明示的にインストールしたパッケージをリストアップ:
$ comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base base-devel | sort)
base や base-devel グループに存在せず、他のパッケージによって必要とされていないインストール済みパッケージをリストアップ:
$ comm -23 <(pacman -Qqt | sort) <(pacman -Sqg base base-devel | sort)
上記と同じで、説明を付けてリストアップ:
$ expac -HM '%-20n\t%10d' $(comm -23 <(pacman -Qqt | sort) <(pacman -Qqg base base-devel | sort))
指定したリポジトリ repo_name に存在しないインストール済みパッケージをリストアップ:
$ comm -23 <(pacman -Qtq | sort) <(pacman -Slq repo_name | sort)
repo_name リポジトリに含まれているインストール済みパッケージをリストアップ:
$ comm -12 <(pacman -Qtq | sort) <(pacman -Slq repo_name | sort)
パッケージに含まれているファイルを容量を付けてリストアップ
特定のパッケージが異常な容量を消費していて、どのファイルが容量を食っているのか調べたいときに便利なコマンドです。
$ pacman -Qlq package | grep -v '/$' | xargs du -h | sort -h
ファイルがどのパッケージにも含まれていないことを確認
どのパッケージにも所有されていない謎のファイルが存在する場合 (パッケージマネージャを使わずにソフトウェアをインストールした場合など)、ファイルを見つけ出して消去すると良いでしょう。以下の手順で見つけ出せます:
- 所有者を確認したいファイルのソート済みリストを作成:
$ find /etc /opt /usr | sort > all_files.txt
- pacman によって追跡されているファイルのソート済みリストを作成 (そしてディレクトリの末尾のスラッシュを削除):
$ pacman -Qlq | sed 's|/$||' | sort > owned_files.txt
- 後者のファイルには存在しない行を確認:
$ comm -23 all_files.txt owned_files.txt
どのパッケージにも含まれない重要なファイル (実行時に生成されるファイルやカスタム設定など) も存在するため、安全に消去できるファイルを選び出す方法としては不適切です。
使用していないパッケージの削除 (孤立したパッケージ)
再帰的に孤立したパッケージ(とその設定ファイル)を削除するには:
# pacman -Rns $(pacman -Qtdq)
孤立したパッケージが見つからなかった場合、pacman は error: no targets specified
を出力します。pacman -Rns
に何も引数が指定されていないとこうなります。
-Rns
(や -Rnc
) オプションは直接依存しているパッケージだけを削除し、明示的にインストールされた任意の依存パッケージは削除しません (--asdeps
オプションを使用しなかった場合)。
必須ではありませんが、任意の依存パッケージをインストールする際に --asdeps
オプションを使用してインストールすることでシステムメンテナンスが楽になります。実行時やインストール時には何も変化はありませんが、--asdeps
オプションを使用してインストールしておけば、孤立したパッケージを削除するときに一緒に削除されるようになります。任意の依存パッケージをインストールするときは、以下のコマンドを使うようにしましょう:
# pacman -S --asdeps <packages that are optional dependencies>
base グループ以外の全てのパッケージを削除する
base グループを除く全てのパッケージを削除する必要がある場合は、以下のワンライナーを試して下さい:
# pacman -R $(comm -23 <(pacman -Qq | sort) <((for i in $(pacman -Qqg base); do pactree -ul "$i"; done) | sort -u))
上記のワンライナーは こちらのスレッド に書かれたものが元になっています。
複数のパッケージの依存パッケージリストを取得
依存パッケージはアルファベット順でソートされ、重複するパッケージは削除されます。
$ pacman -Si packages | awk -F'[:<=>]' '/^Depends/ {print $2}' | xargs -n1 | sort -u
もしくは、expac を使用して:
$ expac -l '\n' %E -S packages | sort -u
変更されたバックアップファイルをリストアップ
システムの設定ファイルをバックアップしたい場合は /etc/
にある全てのファイルをコピーすれば良いですが、普通は変更を加えたファイルだけをバックアップすればそれで足ります。変更が加えられたバックアップファイルは次のコマンドで閲覧できます:
# pacman -Qii | awk '/^MODIFIED/ {print $2}'
root で上記のコマンドを実行することで root からしか読み取れないファイル (/etc/sudoers
など) も出力に含まれるようになります。
pacman データベースをバックアップ
次のコマンドでローカルの pacman データベースをバックアップできます:
$ tar -cjf pacman_database.tar.bz2 /var/lib/pacman/local
バックアップした pacman データベースファイルは USB スティックや外付けハードドライブ、CD-R などのオフラインメディアに保存してください。
pacman_database.tar.bz2
ファイルを /
ディレクトリに移動して以下のコマンドを実行することでデータベースを復元できます:
# tar -xjvf pacman_database.tar.bz2
変更履歴を簡単に確認
メンテナがパッケージを更新するとき、大抵の場合コミットにはコメントが付けられます。pacologAUR をインストールすることでコマンドラインからコミットメッセージを確認することができます。pacolog <package>
を実行すると、公式リポジトリや AUR のパッケージの最近のコミットメッセージを出力します。
インストールとリカバリー
パッケージを取得・復活させる他の方法。
パッケージを CD/DVD や USB スティックからインストールする
パッケージや、パッケージグループをダウンロードするには:
# cd ~/Packages # pacman -Syw base base-devel grub-bios xorg gimp --cachedir . # repo-add ./custom.db.tar.gz ./*
ダウンロードしたら "Packages" フォルダを CD/DVD に焼くか USB スティック、外部 HDD などにコピーしてください。
インストールするには:
1. メディアをマウントする:
# mkdir /mnt/repo # mount /dev/sr0 /mnt/repo # CD/DVD の場合 # mount /dev/sdxY /mnt/repo # USB スティックの場合。
2. pacman.conf
を編集して他のリポジトリ (例: extra, core, etc.) の前にリポジトリを追加してください。この手順は重要です。これで標準のリポジトリに優先して CD/DVD/USB のファイルがインストールされるようになります:
# nano /etc/pacman.conf
[custom] SigLevel = PackageRequired Server = file:///mnt/repo/Packages
3. 最後に、pacman データベースを同期して新しいリポジトリを使えるようにしてください:
# pacman -Sy
カスタムローカルリポジトリ
pacman 3 では個人的なリポジトリのデータベースの作成をより簡単にするため repo-add
という名前の新しいスクリプトが導入されました。詳しい使い方は repo-add --help
を実行して見て下さい。
リポジトリに含むパッケージを全て一つのディレクトリに保存して、次のコマンドを実行してください (repo はカスタムリポジトリの名前に置き換えてください):
$ repo-add /path/to/repo.db.tar.gz /path/to/*.pkg.tar.xz
repo-add
を使う際、データベースとパッケージは同じディレクトリにある必要はないので注意してください。ただしそのデータベースで pacman を使うときには、揃っていないといけません。
新しいパッケージを追加する(そして古いパッケージが存在していたら削除する)には、次を実行してください:
$ repo-add /path/to/repo.db.tar.gz /path/to/packagetoadd-1.0-1-i686.pkg.tar.xz
ローカルリポジトリを作成できたら、リポジトリを pacman.conf
に追加してください。db.tar.gz
ファイルの名前がリポジトリの名前です。file://
url を使って直接参照するか、ftp://localhost/path/to/directory
を使って FTP でアクセスしてください。
カスタムリポジトリを非公式ユーザーリポジトリに追加すれば、コミュニティはそれを使うことができるようになります。
pacman のキャッシュをネットワークで共有する
読み取り専用キャッシュ
If you're looking for a quick and dirty solution, you can simply run a standalone webserver which other computers can use as a first mirror: darkhttpd /var/cache/pacman/pkg
. Just add this server at the top of your mirror list. Be aware that you might get a lot of 404 errors, due to cache misses, depending on what you do, but pacman will try the next (real) mirrors when that happens.
読み書き可能キャッシュ
複数のコンピュータ間でパッケージを共有するには、ネットワークベースのマウントプロトコルを使って /var/cache/pacman/
を共有します。このセクションでは shfs または sshfs を使ってパッケージキャッシュと関連するライブラリディレクトリを同一ローカルネットワーク上の複数のコンピュータで共有する方法を示します。ネットワークで共有されるキャッシュは、ファイルシステムの選択やその他の要因で、遅くなることがあります。
まず、ネットワークをサポートするファイルシステムをインストールしてください。例えば sshfs, shfs, ftpfs, smbfs, nfs など。
Then, to share the actual packages, mount /var/cache/pacman/pkg
from the server to /var/cache/pacman/pkg
on every client machine.
BitTorrent Sync を使って pacman のパッケージキャッシュを同期する
BitTorrent Sync はネットワークを介してフォルダを同期する新方法です (LAN でもインターネットでも動作します)。ピアツーピアなのでサーバーを設定する必要はありません: 詳しくはリンクを参照してください。 BitTorrent Sync を使って pacman のキャッシュを共有する方法:
- まず同期したいマシンに AUR から btsyncAUR パッケージをインストール。
- BitTorrent Sync の wiki ページや AUR パッケージのインストール手順に従う。
- set up BitTorrent Sync to work for the root account. This process requires read/write to the pacman package cache.
- make sure to set a good password on btsync's web UI
- btsync の systemd デーモンを起動。
- in the btsync Web GUI add a new synchronized folder on the first machine and generate a new Secret. Point the folder to
/var/cache/pacman/pkg
- Add the folder on all the other machines using the same Secret to share the cached packages between all systems. Or, to set the first system as a master and the others as slaves, use the Read Only Secret. Be sure to point it to
/var/cache/pacman/pkg
Now the machines should connect and start synchronizing their cache. Pacman works as expected even during synchronization. The process of syncing is entirely automatic.
要らなくなったキャッシュが消えないようにする
By default, pacman -Sc
removes package tarballs from the cache that correspond to packages that are not installed on the machine the command was issued on. Because pacman cannot predict what packages are installed on all machines that share the cache, it will end up deleting files that should not be.
To clean up the cache so that only outdated tarballs are deleted, add this entry in the [options]
section of /etc/pacman.conf
:
CleanMethod = KeepCurrent
インストールしたパッケージのリストのバックアップと復旧
pacman によってインストールしたパッケージのバックアップを定期的に行うのはグッドプラクティスです。何らかの理由でリカバリーできないシステムクラッシュが発生した時、pacman を使って全く同じパッケージを簡単に新しい環境に再インストールすることができるようになります。
- まず、ローカルにない現在のパッケージの一覧をバックアップしてください:
$ pacman -Qqen > pkglist.txt
pkglist.txt
を USB キーやその他メディア gist.github.com, Evernote, Dropbox などに保存してください。
pkglist.txt
ファイルを新しいインストールにコピーして、ファイルが含まれているディレクトリにまで移動してください。
- 次のコマンドを実行することでバックアップリストからインストールを行います:
# pacman -S $(< pkglist.txt)
上記のようにリストが生成されない場合、おそらく foreign パッケージ (設定したリポジトリに存在しないパッケージ、もしくは AUR のパッケージ) が存在します。
そのような場合でも、リストから利用可能なパッケージを全てインストールすることができます:
# pacman -S --needed $(comm -12 <(pacman -Slq|sort) <(sort badpkdlist) )
説明:
pacman -Slq
lists all available softwares, but the list is sorted by repository first, hence thesort
command.comm
コマンドを動作させるにはファイルをソートする必要があります。-12
パラメータは両方のエントリで共通する行を表示します。--needed
スイッチを使うことで既にインストールされているパッケージはスキップされます。
yaourt を使うことで AUR からリポジトリにないパッケージを全てインストールするのを試行することもできます (何がおこるかわかってない場合は推奨しません):
$ yaourt -S --needed $(comm -13 <(pacman -Slq|sort) <(sort badpkdlist) )
最後に、リストに記されていない全てのパッケージをシステム上から削除することができます:
# pacman -Rsu $(comm -23 <(pacman -Qq|sort) <(sort pkglist))
base や base-devel に存在しないダウンロード済みパッケージを一覧
次のコマンドは base や base-devel に存在しない、ユーザーが手動でインストールしたパッケージを全て表示します:
$ comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base base-devel | sort)
インストールしたパッケージの中で特定のリポジトリに存在しないパッケージを表示するには (例えば repo_name
):
$ comm -23 <(pacman -Qtq | sort) <(pacman -Slq repo_name | sort)
インストールしたパッケージの中で repo_name
リポジトリに存在するパッケージを表示するには:
$ comm -12 <(pacman -Qtq | sort) <(pacman -Slq repo_name | sort)
全てのパッケージの再インストール
全てのネイティブのパッケージを再インストールするには、次を使って下さい:
# pacman -Qenq | pacman -S -
外部の (AUR) パッケージは別に再インストールする必要があります。外部のパッケージは pacman -Qemq
で一覧できます。
デフォルトで Pacman はインストールの理由(明示的にインストールしたか、依存でインストールしたか)を維持します。
pacman のローカルデータベースを復元する
ローカルデータベースの復元が必要だと pacman が示す場合:
pacman -Q
で何も出力がされず、pacman -Syu
でシステムが最新だと表示されるとき。pacman -S package
を使ってパッケージをインストールしようとすると、既にインストールされている依存パッケージのリストが出力される。- (pacman に含まれている)
testdb
でデータベースが壊れていると表示される。
以上の場合、十中八九、インストールしたソフトウェアの pacman データベースである /var/lib/pacman/local
が破損していたり削除されています。これは深刻な問題ですが、以下の手順に従うことで復元することができます。
まず、pacman のログファイルが存在するか確認します:
$ ls /var/log/pacman.log
ログファイルが存在しない場合は、この方法で続行することは不可能です。Xyne のパッケージ検出スクリプト を使ってデータベースを再作成してみてください。それができない場合、解決方法としてはシステム全体を再インストールするしかありません。
ログフィルタースクリプト
pacrecover
#!/bin/bash -e . /etc/makepkg.conf PKGCACHE=$((grep -m 1 '^CacheDir' /etc/pacman.conf || echo 'CacheDir = /var/cache/pacman/pkg') | sed 's/CacheDir = //') pkgdirs=("$@" "$PKGDEST" "$PKGCACHE") while read -r -a parampart; do pkgname="${parampart[0]}-${parampart[1]}-*.pkg.tar.xz" for pkgdir in ${pkgdirs[@]}; do pkgpath="$pkgdir"/$pkgname [ -f $pkgpath ] && { echo $pkgpath; break; }; done || echo ${parampart[0]} 1>&2 done
スクリプトを実行可能にしてください:
$ chmod +x pacrecover
パッケージの復旧リストを生成する
スクリプトを実行してください (任意でパッケージが含まれている追加のディレクトリをパラメータで渡して下さい):
$ paclog-pkglist /var/log/pacman.log | ./pacrecover >files.list 2>pkglist.orig
このコマンドで2つのファイルが作成されます: マシンに存在するパッケージファイルが載った files.list
と、ダウンロードするべきパッケージが載った pkglist.orig
です。後者ではマシンに存在する、古いバージョンのパッケージのファイルと、新しいバージョンのファイルでミスマッチが発生することがあります。ミスマッチは手動で修正する必要があります。
Here is a way to automatically restrict second list to packages available in a repository:
$ { cat pkglist.orig; pacman -Slq; } | sort | uniq -d > pkglist
重要な base パッケージが欠けていないか確認して、リストに加えます:
$ comm -23 <(pacman -Sgq base) pkglist.orig >> pkglist
Proceed once the contents of both lists are satisfactory, since they will be used to restore pacman's installed package database; /var/lib/pacman/local/
.
リカバリを実行する
リカバリのための bash エイリアスを定義してください:
# recovery-pacman() { pacman "$@" \ --log /dev/null \ --noscriptlet \ --dbonly \ --force \ --nodeps \ --needed \ # }
--log /dev/null
allows to avoid needless pollution of pacman log, --needed
will save some time by skipping packages, already present in database, --nodeps
will allow installation of cached packages, even if packages being installed depend on newer versions. Rest of options will allow pacman to operate without reading/writing filesystem.
同期データベースを作成:
# pacman -Sy
files.list
からローカルで利用可能なパッケージファイルをインストールしてデータベースの生成を開始:
# recovery-pacman -U $(< files.list)
pkglist
から残りをインストール:
# recovery-pacman -S $(< pkglist)
Update the local database so that packages that are not required by any other package are marked as explicitly installed and the other as dependences. You will need be extra careful in the future when removing packages, but with the original database lost is the best we can do.
# pacman -D --asdeps $(pacman -Qq) # pacman -D --asexplicit $(pacman -Qtq)
Optionally check all installed packages for corruption:
# pacman -Qk
任意でファイルがどのパッケージにも所有されていないことを確認してください。
全てのパッケージをアップデート:
# pacman -Su
既存のインストールから USB キーを回復させる
If you have Arch installed on a USB key and manage to mess it up (e.g. removing it while it is still being written to), then it is possible to re-install all the packages and hopefully get it back up and working again (assuming USB key is mounted in /newarch)
# pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman
.pkg ファイルの中身を展開する
.xz
で終わっている .pkg
ファイルは tar で固められた圧縮ファイルであり、次のコマンドで解凍できます:
$ tar xvf package.tar.xz
ファイルを .pkg
から展開したい場合、この方法を使うことができます。
.pkg ファイルに含まれているファイルを回覧する
例えば、systemd パッケージに入っている /etc/systemd/logind.conf
の中身を見たいのならば:
$ tar -xOf /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz etc/systemd/logind.conf
もしくは vim を使ってアーカイブをブラウズすることもできます:
$ vim /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz
古いパッケージのライブラリを使っているアプリケーションを探す
Even if you installed a package the existing long-running programs (like daemons and servers) still keep using code from old package libraries. And it is a bad idea to let these programs running if the old library contains a security bug.
Here is a way how to find all the programs that use old packages code:
# lsof +c 0 | grep -w DEL | awk '1 { print $1 ": " $NF }' | sort -u
It will print running program name and old library that was removed or replaced with newer content.
パフォーマンス
データベースのアクセス速度を向上させる
Pacman はパッケージの全ての情報を、パッケージごとの小さなファイルに保存しています。データベースのアクセス速度を向上させればデータベースを使う処理 (例: パッケージの検索・パッケージの依存関係の解決) にかかる時間が短くなります。一番安全で簡単な方法は root で次を実行することです:
# pacman-optimize
小さなファイルをハードディスクのひとつの (物理的な) 場所にまとめて置くことでパッケージにアクセスするときにハードディスクのヘッドがあまり動かなくてもいいようにします。この方法は安全ですが、フールプルーフではありません。ファイルシステムによっては、ディスク上の使用している領域と空の領域がフラグメンテーションを起こすことがあります。さらにアグレッシブな方法として、データベースを最適化する前にインストールされていないパッケージをキャッシュから削除し使われていないリポジトリを削除するという方法があります:
# pacman -Sc && pacman-optimize
ダウンロード速度を向上させる
パッケージをダウンロードするとき pacman は /etc/pacman.d/mirrorlist
に書かれている順番通りにミラーを使用します。リストの一番上のミラーがデフォルトで使用されますが、それが最速のミラーだとは限りません。一番高速なミラーを選択する方法はミラーを見てください。
Pacman に初めから入っているファイルダウンローダの代わりに、他のアプリケーションを使ってパッケージをダウンロードすることで Pacman のパッケージダウンロード速度を上げることができます。
どんな場合でも、変更を行う前に最新の Pacman を使っていることを確認してください:
# pacman -Syu
Powerpill
Powerpill は Pacman の完全なラッパーで並行・分割ダウンロードを使うことによってダウンロード処理を高速化します。通常の Pacman は一度にひとつのパッケージしかダウンロードしないので、ダウンロードが完了するまで次のダウンロードが始まりません。Powerpill は異なるアプローチを取ります: 同時に可能な限り多くのパッケージをダウンロードしようとします。
Powerpill の wiki ページに基本的な設定・使用方法と、パッケージと上流のリンクがあります。
wget
pacman に初めから入っている機能よりもパワフルなプロキシ設定が必要な場合、wget はとても使い勝手がよいです。
wget
を使うには、まず pacman -S wget
で wget をインストールして、それから /etc/pacman.conf
を編集して次の行を [options]
セクションでアンコメントしてください:
XferCommand = /usr/bin/wget -c -q --show-progress --passive-ftp -O %o %u
/etc/pacman.conf
に wget
パラメータを記述する代わりに、wget
の設定ファイルを直接修正することも可能です (システム全体のファイルは /etc/wgetrc
、ユーザー別のファイルは $HOME/.wgetrc
)。
aria2
aria2 はレジューム機能と分割 HTTP/HTTPS/FTP ダウンロードをサポートしている軽量なダウンロードユーティリティです。aria2 を使えば同時に複数の HTTP/HTTPS/FTP 接続を Arch ミラーにすることができ、ファイル・パッケージの取得の際のダウンロード速度が上昇します。
aria2 をインストールして /etc/pacman.conf
を編集し、以下の行を [options]
セクションに追加してください:
XferCommand = /usr/bin/aria2c --allow-overwrite=true --continue=true --file-allocation=none --log-level=error --max-tries=2 --max-connection-per-server=2 --max-file-not-found=5 --min-split-size=5M --no-conf --remote-time=true --summary-interval=60 --timeout=5 --dir=/ --out %o %u
aria2c で使用できるオプションについては man aria2c
の OPTIONS を見てください。
-d, --dir
: pacman によって指定されるダウンロードしたファイルを保存するディレクトリ。-o, --out
: ダウンロードしたファイルの出力ファイル名。%o
: pacman によって指定されるローカルのファイル名を表す変数。%u
: pacman によって指定されるダウンロード URL を表す変数。
他のアプリケーション
Pacman で利用できるダウンロードアプリケーションは他にもあります:
snarf
:XferCommand = /usr/bin/snarf -N %u
lftp
:XferCommand = /usr/bin/lftp -c pget %u
axel
:XferCommand = /usr/bin/axel -n 2 -v -a -o %o %u