🐤

Arch Linux: pacmanの設定

2022/08/05に公開

Arch Linuxをインストールした後に行うpacmanの設定で、必要または好ましいと考えられるものをリストアップしていく。全てoptionalな設定なので、内容を見て設定するかどうか決めたら良いと思う。

Mirrorlist

パッケージのダウンロードの際に参照するmirrorは/etc/pacman.d/mirrorlistファイルで管理される。(このファイルパスは/etc/pacman.conf[core], [extra], [community]などのセクションで指定される。) このファイルを見るとわかるが、mirrorサーバーがたくさん列挙されている。このリストの上から優先的に参照される。地理的に近いmirrorを上に配置しておくと良い。

reflectorパッケージは、Arch Linux Mirror Statusから適正なmirrorのリストを取得してダウンロードスピードによってソートし、/etc/pacman.d/mirrorlistを書き換える。

$ sudo pacman -S reflector

例えば次のコマンドは、24時間以内に同期された日本とオーストラリアのmirrorを速度でソートして/etc/pacman.d/mirrorlistを更新する。

$ sudo reflector --country Japan,Australia --age 24 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

(これはInstallation guideで推奨されているので、すでに設定済みの場合が多いかもしれない。)

mirrorlistの定期更新

reflectorパッケージにはsystemdのserviceが同梱されている。これを有効化することで起動時に自動的にreflectorが実行されて/etc/pacman.d/mirrorolistが更新される。(このとき/etc/xdg/reflector/reflector.confがオプションとして渡される。)

$ sudo systemctl enable reflector.service

個人的には一旦mirrorlistを設定したら当分放っておいて良いかなと思っているので、定期更新は設定していない。

Comparing versions before updating

パッケージアップデートの前にバージョンの差異やダウンロードサイズなどを表示する。/etc/pacman.conf[options]下のVerbosePkgListsをアンコメントする。

# /etc/pacman.conf
...
[options]
...
VerbosePkgLists
...

$ sudo pacman -Syuで次のような出力がされるようになって結構面白い。

Package (6)             Old Version  New Version  Net Change  Download Size

extra/libmariadbclient  10.1.9-4     10.1.10-1      0.03 MiB       4.35 MiB
extra/libpng            1.6.19-1     1.6.20-1       0.00 MiB       0.23 MiB
extra/mariadb           10.1.9-4     10.1.10-1      0.26 MiB      13.80 MiB
...

Parallel downloads

並列ダウンロードを有効化する。/etc/pacman.conf[options]下のParallelDownloadsをアンコメントする。

# /etc/pacman.conf
...
[options]
...
ParallelDownloads = 5
...

Cleaning cache

pacmanは/var/cache/pacman/pkgにダウンロードしたパッケージをキャッシュしておく。そしてこのディレクトリの古いものやインストールしていないバージョンが自動的に削除されることはない。このことは次の利点がある。

  • パッケージのダウングレードを簡単に行える。($ sudo pacman -U file:///var/cache/pacman/pkg/package-old_version.pkg.tar.zst)
  • アンインストールしたパッケージの再インストールを簡単に行える。

しかしキャッシュのディレクトリが無限に膨張していくのを防ぐため、やはり定期的に削除する必要がある。

pacman-contribパッケージで提供されるpaccacheコマンドでキャッシュクリーニングが可能である。このpacman-contribパッケージはpacman関連のツールを提供するもので、以前はpacmanに同梱されていた。今は別のパッケージなのでインストールする必要がある。

$ sudo pacman -S pacman-contrib

例えば次のようなpaccacheコマンドは、最新のキャッシュを3バージョン分を残して全てのキャッシュを削除する。

$ sudo paccache -r

キャッシュクリーニングの定期実行

こういったキャッシュクリーニングを毎週自動的に行うにはpaccache.timerを有効化する。(再起動後に有効化される。)

$ sudo systemctl enable paccache.timer

(この記事では関係ないのだが、pacman-contribパッケージは面白いコマンドがあるので調べてみると良い。というか私も全然詳しくない。)

Color

pacmanの出力をカラー化する。/etc/pacman.conf[options]下のColorをアンコメントするとできる。

# /etc/pacman.conf
...
[options]
...
Color
...

ILoveCandy

pacmanの出力にパックマンを登場させる。/etc/pacman.conf[options]下にILoveCandyを追加する。

# /etc/pacman.conf
...
[options]
...
IloveCandy
...

まあ特に意味はないのだがなんか人気。かわいい。

あとがき

間違った記述や他の良い設定があれば教えてくれると助かります。

参照

Discussion