Debian 9.1:apt-get autoremove 不会删除依赖项

mrj*_*per 3 debian apt package-management

在此输入图像描述

从截图中可以看出,我安装了checkinstall,它附带了很多新的依赖包。

当我跑步时:

sudo apt-get purge checkinstall
Run Code Online (Sandbox Code Playgroud)

仅 checkinstall 被删除。然后我跑了:

sudo apt-get autoremove
Run Code Online (Sandbox Code Playgroud)

删除新包但没有删除任何内容。

有什么想法我可能做错了什么吗?谢谢

附言。请忽略 ubuntu 文件夹。这只是一个目录名称。我确实在使用 Stretch

edit1: aptitude 的输出为什么 binutils build-essential

在此输入图像描述

Ste*_*itt 6

默认情况下,apt-get autoremove非常保守,这会导致您\xe2\x80\x99 看到的行为。虽然apt-get install默认情况下仅考虑直接依赖项和建议,apt-get autoremove但也会考虑建议(非常弱的依赖项)。这是不对称的,意味着默认情况下apt-get autoremovewon\xe2\x80\x99 不一定完全撤消软件包安装。

\n\n

因此,在您的情况下,安装checkinstall拉入了许多软件包,所有这些软件包最终都被认为是不可删除的apt-get autoremove;例如,build-essential被保留是因为apt(这绝对是必要的)建议dpkg-dev,建议build-essential。您\xe2\x80\x99将为 . 拉入的每个包找到这种类型的关系checkinstall

\n\n

要解决此问题,您可以添加

\n\n
Apt::AutoRemove::SuggestsImportant "false" ;\n
Run Code Online (Sandbox Code Playgroud)\n\n

通过此设置,apt-get autoremove将找到更多要删除的包。由于你的系统是新安装的,所以应该是安全的(我的意思是上面提到的不对称性不会引起很多意外,因为你还没有安装很多软件包);但在实际删除之前,请检查它要删除的软件包列表\xe2\x80\x99!

\n