通常,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
查找已安装或已安装在我的系统上的包,结果是:dpkg
grep
ii libqt5x11extras5
ii vlc-plugin-qt
看到了吗?我们发现这个包与我们列表中的另一个包相关autoremove
:vlc-plugin-qt
,最后:
$ aptitude why vlc-plugin-qt
c vlc
我们 回到 了vlc
.