为什么删除“元包”不会删除它安装的依赖项?

tec*_*him 4 deb metapackages

如果我尝试卸载元包,apt实际上并不会删除元包的依赖项,只会删除“包装器”本身。即使在运行时apt autoremove,也不会列出这些子包。我发现autoremove删除大多数普通包的依赖项很令人困惑,但不是很多元包。为什么是这样?

Gus*_*uss 5

元包在任何方面都不是魔法:“元包”的概念不是 APT 系统的一部分 - 元包只是一个没有实际内容,只有依赖项的包。因此,删除它们与删除包含实际内容的包的效果相同,该包还取决于其他一些东西,例如 Web 服务器应用程序模块将需要 Web 服务器,但是当您删除它时 - Web 服务器仍应保持安装状态。

话虽如此,APT 会跟踪哪些包是自动安装的,因为另一个包请求了它们(比如请求“实际”包的元包,或者需要 Web 服务器的 Web 服务器应用程序模块),并且一旦您删除了需要的包 APT将建议您运行apt autoremove以摆脱此类自动安装的软件包。

在 Ubuntu 操作系统中使用的“元包”的主要问题是它们依赖于很多包,本质上是通过一次安装来安装大量软件。当安装如此多的包,特别是这样的紧密联系在一起-你可以得到很多交叉依赖的:元包需要的包ABC为你,但A也取决于BB(也许令人惊讶的)也要看A。因此,如果您删除元包,则只会C被删除。

作为一个具体的例子,让我们考虑一下 LXDE 元包lubuntu-desktop

以下答案有更多详细信息: