Solist Work Blog

Software engineer note

これだけ覚えておけばいいArchLinuxのパッケージ管理

不具合があった場合の対処について考えます。 Archlinuxを使用していてアップデートで不具合のあるバージョンが配信された場合 不具合がなおるまでなんとかしなければいけません。 そのような時の対処法を用意しておけば困ることはないでしょう。

ArchLinux標準パッケージだけ使用する場合

sudo pacman -Syu ; paccache -ruk0

yayを使ってAURも使う場合

yay -Syu; paccache -r; paccache -ruk0 

このコマンドでアップデートするようにしておくと 3 世代分のパッケージがずっと保存されていきます。 パッケージがアップデートされても2世代前まで遡ることができます。 例えば、最新の sqlite が起動しなくて困った場合は1 以下のようにすればよいです。 まず、3世代のパッケージが保存されているキャッシュフォルダに移動します。

pacmanのキャッシュディレクトリに移動

cd /var/cache/pacman/pkg/

ls | grep sqlite

sqlite-3.14.2-1-x86_64.pkg.tar.xz
sqlite-3.15.1-2-x86_64.pkg.tar.xz
sqlite-3.15.2-1-x86_64.pkg.tar.xz

今回は sqlite-3.15.2-1-x86_64.pkg.tar.xz にバグがあったと仮定して進めます。 sqlite-3.15.1-2-x86_64.pkg.tar.xz にダウングレードして

sudo pacman -U sqlite-3.15.1-2-x86_64.pkg.tar.xz

不具合がなおるまでアップデート対象からsqliteを外します。

vim /etc/pacman.conf

IgnorePkg = sqlite

としておけばアップデート対象から sqlite が弾かれます。 不具合がなおったら IgnorePkg = sqlite を消すかコメントアウトしておけばよいでしょう。 実際にここまで困った事態になったことはありませんが。

インストールしてすぐなどは過去のパッケージがない状態なのでダウングレードできないのではないかという心配はありません。 コマンドで公式リポジトリから古いパッケージを持ってくるdowngradeを使えばダウングレードできます。

yay -S downgrade

AURからインストールしたら

downgrade sqlite

で欲しいバージョンのパッケージがインストールできます。

downgradeコマンドを使っているところ

それ以外にも覚えて損はないもの

依存していて他から使われていないパッケージもいっしょに消す

sudo pacman -Rs perl

pacman でインストールしたパッケージリストを作る

pacman -Qqen > pkglist.txt

yay でAURからインストールしたパッケージリストを作る

pacman -Qqem > yaylist.txt

インストールされたパッケージの実態ファイルを表示する

pacman -Ql zlib

パッケージの実態ファイルを表示

ファイルからパッケージを特定することもできます。 以下のコマンドで /etc/pacman.conf がどのパッケージに所属しているのかわかります。

pacman -Qo /etc/pacman.conf

パッケージをファイルから特定する

パッケージの依存関係を表示する

pactree git

パッケージの依存関係を表示

利用したいソフトウェアからパッケージ名を見つける

pkgfile firefox

.zshrc に以下を書いておくと

if [ -f /usr/share/doc/pkgfile/command-not-found.zsh ]; then
	source /usr/share/doc/pkgfile/command-not-found.zsh
fi

conkyと打ち込んでconkyがインストールされていなかった場合、どのパッケージにconkyが入っているか教えてくれます。 パッケージ名とコマンドが一致しないこともままあるので便利です。

パッケージ名を探す


  1. 実際にそんな事態にはこの一年なっていません。 ↩︎

タグ一覧

お仕事のご相談などはこちらからどうぞ

お仕事の依頼はこちらからどうぞ