如何检测先前依赖的软件包升级后不再需要的 Debian 软件包?

如何检测先前依赖的软件包升级后不再需要的 Debian 软件包?

假设有一个名为 的 Debian 软件包Foo,其版本1.1.1依赖于名为 的软件包Bar

想象一下,有一个更新版本的Foo==1.1.2,它不再依赖于Bar

升级后,该软件包Bar不会自动卸载。而且,apt autoremove也不卸载这个包。

Bar在升级依赖于这些软件包的过程中,如何自动检测此类软件包?我如何摆脱这样的包裹Bar

答案1

如果在命令的输出中找到,您的包可能已以以下状态结束,而不是可以确认的Bar状态:manualauto

apt-mark showmanual

因此不再由 处理apt-get autoremove

您可以使用该工具deborphan从包装中deborphan专门寻找此类包。它不使用包的manual状态来进行启发。

可以找到未使用的包(例如库)的程序

deborphan 在您的系统上找到“孤立”包。它根据安装情况确定哪些软件包没有其他软件包,并向您显示这些软件包的列表。它在查找库时最有用,但它可以用于所有部分的包。

请注意,它也可能会产生误报,特别是对于插件库(可以删除而不会导致依赖性问题的库,但删除它们会删除某处的功能)。

您可以使用 给出的结果deborphan自行删除软件包,或者将它们标记回来,auto

apt-mark auto package1 package2 ...

以便进一步处理apt-get autoremove

答案2

我相信apt removeDebian 相当于 Arch 的pacman -Qdtq,它只是查询不再需要作为依赖项的包。要删除它们,我怀疑你必须运行类似的命令

apt remove $(apt autoremove)

(对于 Arch 你必须运行类似的东西pacman -R $(pacman -Qdtq))。

至于自动删除这些包,我不确定是否更改 的配置apt,但您可以将以上行添加到您的.bashrc.

免责声明:我没有在 Debian 上这样做过,但我已经使用 Arch 做了你想做的事情。

相关内容