package-cleanup (yum) から dnf コマンドへの変更

(2019.1)

package-cleanup コマンド (yum-utils パッケージ) が, いよいよ廃止される.

dnf は, Fedora 18 (2013年1月) で導入され、Fedora 22 (2015年5月) でデフォルトの package manager になった。Fedora 29 ではまだ package-cleanup コマンドは残っているが、アップデートで時々、うまく動かなくなっている。dnf への移行が必要.

Fedora 29 での廃止は見送られたが, Fedora 30 で今度こそ廃止の予定; Yum Won't Be Dropped For Fedora 29

yum 関連は, python2 に依存している残り少ないパッケージの一つ。この他はもう mariadb ぐらいしか残っていない。python2 時代の終わりでもある。

package-cleanup --leaves のアルゴリズムは壊れており、その点でも dnf に移行するメリットがある。

しかしながら、コマンドライン・オプションが変わってしまうため、単にコマンド名を替えるだけでは上手くいかない。

というわけで、簡単に対比表を作っておく。

package-cleanup コマンドと dnf

package-cleanup コマンドは, dnf のサブコマンドで置き換えられる。

dnf は, サブコマンドが多すぎて, man とか info では、追いつかない。DNF Command Reference — DNF 4.0.10-1 documentation

package-cleanup のオプション 内容 同等の dnf サブコマンド
--problems 手元のRPMデータベース上で問題がないか表示する.
List dependency problems in the local RPM database
repoquery --unsatisfied
--orphans インストールされていて、提供元のリポジトリにないものを表示.
List installed packages which are not available from currently configured repositories.

リポジトリを使わずに別にrpmファイルをインストールしたようなもの以外は、すべて削除していい。

repoquery --extras
--dupes バージョン違いなど重複してインストールされているパッケージ.
Scan for duplicates in your rpmdb
repoquery --duplicates
--cleandupes 重複を探し、古いほうをアンインストールするところまでやってくれる.
Scan for duplicates in your rpmdb and remove older
remove --duplicates
--leaves 手元のRPMデータベース上で, ほかのどのRPMからも依存されていないパッケージを表示する.
List leaf nodes in the local RPM database.

余計なものである可能性が高い。rpmパッケージでないソースコードをコンパイルするとき必要なライブラリ・ヘッダ以外であれば、すべて削除していい。

repoquery --unneeded
--oldkernels Remove old kernel and kernel-devel packages remove --oldinstallonly

こうやって見ると、検索なのか削除なのかが混乱していたのが、整理されている。