我从 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 autoremove
,B
被标记为可自动删除并被检查,但由于A
仍然安装,B
因此被保留,即使导致它首先安装的软件包已经消失。因为A
仅推荐B
,您可以手动删除B
以恢复到初始情况。