早いもので、Arch LinuxベースのManjaro Linuxを利用するようになって、今年末で4年目です。
もちろん、Manjaro Linux一択になったということではありません。自宅のデスクトップPCには、DebianベースのMX LinuxやUbuntuベースのLinux Mintなど、複数のディストロがインストールされています。また、職場ではWindowsのWSL2上のUbuntuからSSHを使って、CentOSで構築したサーバーの管理もします。
お試し環境では必須のautoremove
こうした マルチディストロ環境下で、Ubuntu/Debianベースのディストロではパッケージ管理にapt、RedHat系のディストロでは、yumやdnfを使うことになります。
そして、さまざまなプログラムやライブラリをインストールしては削除するといったことを繰り返しているとき、 aptやdnfにあるautoremoveというオプションのお世話になることが多くなります。 autoremoveは、 削除されないまま残った不要になった依存性のパッケージをまとめて削除してくれるとう超便利なオプションです。
使い方はいたって簡単。
sudo apt autoremove
sudo dnf autoremove
なお、autoremoveを実行するには管理者権限が必要なので、それぞれのコマンドはsudoコマンドから始めています。
Arch系のpacmanにはautoremoveがないけれど
では、Arch系のManjaro Linuxのパッケージ管理ツールであるpacmanではどうでしょうか。実は、 厳密な意味でのautoremoveに該当するオプションはありません。
ただし、パイプラインを使うなどを使うなどして、コマンドを組み合わせることによって、autoremoveと同じ機能を実現することはできます。
pacmanでパイプラインを使って、aptやdnfのautoremoveに該当する機能を実現する組み合わせは、次のとおり。
pacman -Qdtq | sudo pacman -Rs -
パイプライン前のpacman -Qdtqは、依存パッケージとして自動的にインストールされたパッケージのなかで、今は必要とされていないものをリスト表示せよというコマンドです。パッケージ名を表示するだけなので、管理者権限を必要ありません。一方、パイプライン後ろのpacman -Rs -は、pacman -Qdtqでリストアップされたパッケージを削除しなさいというコマンドりますので、こちらには管理者権限が必要です。
pacmanのオプションの意味が分かれば、丸暗記は不要
実は、Manjaro Linuxを使い始めた当初、このコマンドの組み合わせを忘れて、慌ててPacman/比較表を参照するということがよくありました。
だから、当初はpacmanってちょっと不便だなと印象を持っていたのですが、今では、pacmanって良くできていると感じることが多くなりました。
ひとつは、オプションの意味が分かれば、滅多なことでは忘れなくなる(丸暗記不要)という点。そしてもうひとつが、オプションの自由な組み合わせができる点です。
例えば、次のとおり、パイプラインを使うことなく、autoremoveを実現することも可能です。
sudo pacman -Rs $(pacman -Qdtq)
なお、AURヘルパーのyayをインストールすれば、もっと簡単にautoremoveを実現できますが、この話題は、後日、別の投稿にて。