如何在 apt-get autoremove 中查找孤立包的原因?

如何在 apt-get autoremove 中查找孤立包的原因?

通常,apt-get autoremove删除已作为其他软件包的依赖项安装的软件包,而这些软件包现在不再安装。我注意到我的孤立软件包列表包括emacs24和 之类的东西tmux,我肯定想保留它们。是否可以找出哪个其他(现在丢失的)软件包首先负责安装它们?

答案1

自动地:

解决方案之一是使用aptitude,首先安装它:

sudo apt install aptitude

现在要找出为什么某个包已安装在你的 Ubuntu 上,你可以运行:

aptitude why pkgname 

但请注意:

在这种情况下,aptitude 生成的依赖关系只是一个建议。这是因为当前安装在此计算机上的软件包不依赖或推荐“pkgname”。

还:

aptitude why不执行完整的依赖关系解析;它仅显示包之间的直接关系。

总之,如果您找不到相关的软件包,那么很有可能这个软件包已经作为依赖项或推荐项安装,而其他软件包将使用 进行删除apt autoremove,或者以某种方式与该链相关。

手动

首先让我们产生一个情况然后尝试找出为什么安装了一个包,我首先vlc在我的系统上安装了它:

sudo apt install vlc

之后我仅vlc使用删除其本身sudo apt remove vlc,现在如果我运行,sudo apt autoremove我将得到:

libqt5x11extras5 vlc-bin vlc-plugin-qt ...

让我们首先使用以下命令检查其中一个aptitude

$ aptitude why libqt5x11extras5
aptitude why libqt5x11extras5
i   xorg      Depends  xterm | x-terminal-emulator
p   qterminal Provides x-terminal-emulator

然而,由于直接依赖链,另一个将正常工作:

$ aptitude why vlc-bin
c   vlc      Depends  vlc-bin

请注意,c这意味着该包已被删除,但其配置文件仍然存在于我的系统中,因此很有可能(在本例中为 100%)是vlc-bin由安装的vlc

现在让我们回到我们的工作并找出为什么libqt5x11extras5存在于我们的 Ubuntu 上:

$ apt-cache rdepends libqt5x11extras5 | xargs dpkg -l |& grep -e '^i' -e '^rc'

使用apt-cache rdepends查找所有依赖于 的包,然后使用的组合libqt5x11extras5查找已安装或已安装在我的系统上的包,结果是:dpkggrep

ii  libqt5x11extras5
ii  vlc-plugin-qt

看到了吗?我们发现这个包与我们列表中的另一个包相关autoremovevlc-plugin-qt,最后:

$ aptitude why vlc-plugin-qt
c   vlc

我们 回到 了vlc.

相关内容