これだけ覚えておけばいいArchLinuxのパッケージ管理
不具合があった場合の対処について考えます。 Archlinuxを使用していてアップデートで不具合のあるバージョンが配信された場合 不具合がなおるまでなんとかしなければいけません。 そのような時の対処法を用意しておけば困ることはないでしょう。
ArchLinux標準パッケージだけ使用する場合
sudo pacman -Syu ; paccache -ruk0
yayを使ってAURも使う場合
yay -Syu; paccache -r; paccache -ruk0
このコマンドでアップデートするようにしておくと 3 世代分のパッケージがずっと保存されていきます。 パッケージがアップデートされても2世代前まで遡ることができます。 例えば、最新の sqlite が起動しなくて困った場合は1 以下のようにすればよいです。 まず、3世代のパッケージが保存されているキャッシュフォルダに移動します。
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
で欲しいバージョンのパッケージがインストールできます。
それ以外にも覚えて損はないもの
依存していて他から使われていないパッケージもいっしょに消す
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が入っているか教えてくれます。 パッケージ名とコマンドが一致しないこともままあるので便利です。
-
実際にそんな事態にはこの一年なっていません。 ↩︎
ブログ記事を投稿したらTwitterでお知らせいたします。ブログを気に入っていただけた方はお気軽にフォローしてください。
— Solist Work (@SolistWork) 2018年11月27日
最新記事
タグ一覧
-
ansible (2)
application (8)
chrome (1)
command (14)
django (1)
docker (3)
document (1)
emacs (14)
git (2)
google (1)
hugo (1)
kubernetes (1)
linux (20)
makefile (6)
mariadb (2)
melpa (1)
postgresql (2)
python (1)
security (2)
terminal (11)
thinkpad (2)
work (6)
zsh (10)