当我通过apt-get install <package>或aptitude install <package>安装软件包,然后用apt-get purge <package>; apt-get autoremove --purge删除它们时,我的系统就不像以前一样了。它还安装了额外的软件包。
按照apt-mark showauto的指示,附加包被标记为自动安装。
也就是说,这发生在g++-8的Ubuntu18.04中,离开了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。是否有一种干净的方法来防止这种情况,即不必解析APTs输出?
发布于 2019-10-03 09:00:10
autoremove没有像您预期的那样删除的原因是,安装的包自动满足您已经安装的其他包的弱依赖关系。在您的示例中,dpkg-dev本身已经安装为一个自动依赖项;因为它建议使用虚拟c-compiler包,所以提供c-compiler的任何包都将在安装后保留。
换句话说,您已经安装了包A,它对包B的依赖性很弱,而包B没有安装。如果您稍后在包B上安装了依赖项(强或弱,但已被apt‘S配置考虑)的软件包C,则还将安装包B,并将其标记为自动安装。但是,删除包C不会使B包被考虑自动删除,因为包A对apt来说保持了“有趣”。
您可以要求autoremove忽略弱依赖项(默认情况下是建议),但这可能会导致比您预期或希望的更多的包变得可移动。
我不知道有什么好的解决办法。aptitude在自动删除方面有一些进展,但它也不能处理所有情况。
有关这方面的更多信息,请参见如何建议和建议与apt-获取dist升级和apt-搞到自动删除交互?和为什么“apt-获取自动删除”不能正常工作?。
https://unix.stackexchange.com/questions/544801
复制相似问题