该软件包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
会保持安装状态而不是自动删除呢?这个问题与具体情况无关:我想学习一种可靠的方法来解释为什么某些软件包仍然安装而不是被自动删除。
我使用的是 Ubuntu 20.04。该包是安装然后删除后剩余的依赖项lmms:amd64
。我知道如何清理。
答案1
当我开始阅读你的问题时,我认为这可能是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
源代码中。