如何防止 APT 保留我未安装的软件包?

如何防止 APT 保留我未安装的软件包?

apt-get install <package>当我通过或安装软件包aptitude install <package>并随后使用 删除它们时apt-get purge <package>; apt-get autoremove --purge,我的系统与以前的状态不同。它仍然安装了其他软件包。

附加软件包被标记为自动安装,如 所示apt-mark showauto

也就是说,这发生在 Ubuntu 18.04 下g++-8,离开cpp-8 gcc-8 libasan5:amd64 libcc1-0:amd64 libgcc-8-dev:amd64 libisl19:amd64 libmpc3:amd64 libmpfr6:amd64 libstdc++-8-dev:amd64 libubsan1:amd64。是否有一种干净的方法可以防止这种情况发生,即不必解析 APT 输出?

答案1

autoremove没有像您期望的那样删除的原因是,安装的软件包自动满足您已安装的其他软件包的弱依赖关系。在您的情况下,dpkg-dev已经安装,本身作为自动依赖项;因为它推荐虚拟c-compiler包,所以任何提供的包c-compiler在安装后都会保留。

换句话说,您已经安装了程序包 A,并且对程序包 B 存在弱依赖性,但尚未安装程序包 B。如果您稍后安装软件包 C,并且对软件包 B 有依赖性(强或弱,但要考虑到apt软件包 B 的配置),则软件包 B 也将被安装,并标记为自动安装。然而,删除程序包 C 不会导致程序包 B 被考虑自动删除,因为程序包 A 就其而言使其保持“有趣” apt

可以要求autoremove忽略弱依赖项(默认情况下建议),但这可能会导致比您预期或想要的更多的包变得可移动。

我不知道对此有什么好的解决方案。aptitude在自动删除方面更具攻击性,但它也不能处理所有情况。

推荐和建议如何与 apt-get dist-upgrade 和 apt-get autoremove 交互?为什么“apt-get autoremove”无法正常工作?了解更多相关信息。

相关内容