我只想从系统中删除 2 个包:
apt-get remove ubuntu-desktop memtest86+
但程序想要自动删除其他 371 个软件包,而我不想删除它们,也不想将它们标记为“不再需要”。如何防止 apt 自动删除这些其他软件包?如何告诉系统“启用”之前标记为“不再需要”的软件包?
答案1
ubuntu-desktop
是一个非常小的软件包;它只包含两个文件,/usr/share/doc/ubuntu-desktop/changelog.gz
并且/usr/share/doc/ubuntu-desktop/copyright
。它包含的内容是依赖项; 它依靠很多软件包都包含 ,它们共同构成了 Ubuntu 桌面。如果你删除ubuntu-desktop
,这些软件包将变为“不再需要”,也就是说,就软件包管理器而言,它们不再有存在的理由。事实上它们不会存在:它们存在是为了满足 的依赖关系ubuntu-desktop
。
要将一个或多个软件包标记为手动安装,您可以使用apt-mark
。要回答您的具体问题,您可以随时获取软件包列表,该列表apt-get
告诉您删除后将ubuntu-desktop
不再需要,然后将其提供给以apt-mark
将它们标记为手动安装。
答案2
来自 apt-mark 手册:
当您请求安装某个软件包时,结果会安装其他软件包以满足其依赖性,依赖性会被标记为自动安装,而您明确安装的软件包则被标记为手动安装。一旦自动安装的软件包不再依赖于任何手动安装的软件包,则认为该软件包不再需要,例如 apt-get 或 aptitude 至少会建议删除它们。
Manual 用于将包标记为手动安装,如果没有其他包依赖于该包,它将阻止该包被自动删除。
apt-mark manual <packages>
<packages>
您不想自动删除的软件包(或以空格分隔的软件包列表)在哪里。
apt-mark manual unity8-desktop-session ubuntu-software