読者です 読者をやめる 読者になる 読者になる

RPM パッケージ間の依存の非対称性について

Linux システムの、RPM ベースのディストリビューションにおいて、インストール時とアンインストール時の依存関係が非対称なことがあるようです。
私が実験しているのは Fedora (の yum )ですが、パッケージ a をインストールする時には依存関係で b もインストールしなければならないが、b のアンインストールでは a のアンインストールは起きない、というパッケージの組が存在します。
RPM ベースのシステムでは、rpm コマンドで、インストールされているパッケージについては、依存について調べることができます。「rpm -qR パッケージ名」で、パッケージが必要としているケーパビリティ、「rpm -q --provides パッケージ名」で、パッケージが提供しているケーパビリティが表示されます( RPM の依存関係は、パッケージ間の直接ではなく、コマンドのパス名などの「ケーパビリティ」を通して間接的に解決されます)。
さらに「rpm -q --whatrequires ケーパビリティ名」と「rpm -q --whatprovides ケーパビリティ名」で、あるケーパビリティを要求している・提供しているパッケージが、一覧で出てきますが、whatrequires のほうは -qR での結果と対称的でないことがあります。前述の、パッケージ b のアンインストール時に、b に依存しているはずのパッケージ a がアンインストールされない、という現象と一致しているようです。
ですので、「インストール時にこれも必要になる」というチェックでは --whatprovides で、「アンイントールではこれも削除される」というチェックでは --whatrequires でチェックすると良いでしょう。なぜこのような非対称性があるのかよくわかっていません。依存の対象がインストール時の初期設定でのみ必要な場合、という気もします。
Fedora 17 の Core + Base グループをインストールした時に入るパッケージで whatrequires に違いが出るものを、http://gist.github.com/3087782 にまとめてあります。