自動削除されないaptの依存関係を説明するにはどうすればよいですか?

Aug 23 2020

パッケージlibudev1:i386が私のシステムにインストールされています。

$ dpkg -l | grep libudev1:i386
ii  libudev1:i386  245.4-4ubuntu3.2  i386  libudev  shared library

自動削除されません。

$ sudo apt autoremove
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

手動でインストールのマークが付けられていません。

$ apt-mark showmanual | grep libudev1 | wc -l
0

aptitude なぜインストールされているのかわかりません。

$ aptitude why --show-summary libudev1:i386
Packages requiring libudev1:i386:

どちらもしませんapt-rdepends

apt-rdepends --reverse --state-follow=Installed --state-show=Installed --follow=Depends,Recommends,Suggests libudev1:i386
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libudev1:i386

では、なぜlibudev1:i386自動削除されるのではなく、インストールされたままになるのでしょうか。この質問は特定のケースに関するものではありません。自動削除されるのではなく、一部のパッケージがインストールされたままになる理由を説明する信頼できる方法を学びたいと思います。

Ubuntu20.04を使用しています。パッケージは、インストールしてから削除した後の残りの依存関係lmms:amd64です。私は片付ける方法を知っています。

回答

1 StephenKitt Aug 28 2020 at 23:09

私があなたの質問を読み始めたとき、それはDebian 9.1の変種かもしれないと思いました:apt-get autoremoveは依存関係を削除しませんが、あなたのapt-rdependsコマンドはそうではないことを示しています。

ただし、apt show libudev1:i386パッケージが自動削除の候補ではない理由を明らかにします。

Package: libudev1:i386
Version: 245.4-4ubuntu3.2
Priority: required
Section: libs
Source: systemd
[...]

優先度は「必須」であるため、一度インストールすると、自動削除の候補にはなりません。(このlibudev1構成はUbuntu固有であり、Debianパッケージの優先順位は「オプション」です。)

一般的な質問に答えるために、パッケージが手動でインストールされた、必須、優先度が「重要」または「必須」である、他のインストールされたパッケージに依存、推奨、または提案されている場合、パッケージは自動削除の候補にはなりません。 (削除から保護されているなど、現在のカーネル)、または保持されています。これapt-pkg/depcache.ccはaptソースコードで確認できます。