为什么“apt-get autoremove”无法正常工作?

为什么“apt-get autoremove”无法正常工作?

我从 PPA 存档安装了 Pipelight,根据这些说明

该安装命令sudo apt-get install --install-recommends pipelight-multi仅针对一个包,但需要下载并安装约 180 个依赖包,其中约 40 个是对当前安装的包的升级。

因此,安装了大约 140 个新软件包。

Pipelight 随后不起作用,所以我将其删除:

sudo apt-get purge pipelight-multi

没有删除其他包。

然后我用了sudo apt-get autoremove.此命令删除了所有可自动删除的软件包。其中正好有 100 个(Synaptic 软件包管理器的“可自动删除”列表中也正好有 100 个软件包)。

因此,这留下了大约 40 个不被视为可自动删除的软件包,因此没有被删除。我必须手动删除它们。

在安装 Pipelight 之前,我的系统上没有未满足的依赖项;我没有将任何软件包标记为手动安装、安装或删除任何其他内容或类似内容。从安装 Pipelight 到移除它只花了大约十分钟。

那么,在我删除 Pipelight 后,为什么它的所有不需要的依赖项没有被标记为自动删除呢?

答案1

我最好的猜测是,这 40 个软件包是您已经安装的其他软件包推荐的; Pipelight-multi 以及该--install-recommends选项导致它们被安装,但由于这些建议,它们在删除后被保留。由于您已手动删除了这些软件包,因此很难确定,但将来您可以运行aptitude why ${package}您认为应该自动删除的每个软件包,并且aptitude会告诉您为什么要保留它。

这背后的机制不一定是直观的。当软件包被标记为可自动删除时,无论是手动还是自动(在后一种情况下,因为它是自动安装的以满足依赖性或建议),自动删除标记是唯一存储的信息;系统不记得为什么自动安装软件包。仅当其他软件包依赖或推荐它们时,才会保留此类软件包(这是默认设置,可以更改)。

所有这些都可以解释您的情况如下。您已经A安装了一些其他软件包;该软件包推荐B但后者未安装。你安装pipelight-multi哪个也推荐B;鉴于您明确指定--install-recommends,我们知道B随后会与 一起安装pipelight-multi。当您删除pipelight-multi并运行时apt-get autoremoveB被标记为可自动删除并被检查,但由于A仍然安装,B因此被保留,即使导致它首先安装的软件包已经消失。因为A仅推荐B,您可以手动删除B以恢复到初始情况。

相关内容