blu*_*e10 4 package-management apt
通常,apt-get autoremove
删除已作为某些其他软件包的依赖项安装的软件包,这些软件包现在不再安装。我注意到我的孤儿包列表包括像emacs24
and 之类的东西tmux
,我绝对想保留它们。是否有可能首先找出哪个其他(现在丢失)软件包负责安装它们?
解决方案之一是使用aptitude
,首先安装它:
sudo apt install aptitude
Run Code Online (Sandbox Code Playgroud)
现在要找出为什么在您的 Ubuntu 上安装了一个软件包,您可以运行:
aptitude why pkgname
Run Code Online (Sandbox Code Playgroud)
但请注意:
aptitude 在这种情况下产生的依赖只是一个建议。这是因为此计算机上当前安装的软件包均不依赖或推荐“pkgname”。
还:
aptitude why
不执行完全依赖解析;它只显示包之间的直接关系。
总之,如果您找不到相关的包,那么该包很有可能已作为依赖项或建议安装在将使用 删除的其他包中apt autoremove
,或者以某种方式与此链相关.
首先让我们产生一个情况,然后尝试找出安装包的原因,我首先安装vlc
在我的系统上:
sudo apt install vlc
Run Code Online (Sandbox Code Playgroud)
之后,我只使用 删除vlc
自身sudo apt remove vlc
,现在如果我运行,sudo apt autoremove
我会得到:
libqt5x11extras5 vlc-bin vlc-plugin-qt ...
Run Code Online (Sandbox Code Playgroud)
让我们首先使用aptitude
以下方法检查其中一个:
$ aptitude why libqt5x11extras5
aptitude why libqt5x11extras5
i xorg Depends xterm | x-terminal-emulator
p qterminal Provides x-terminal-emulator
Run Code Online (Sandbox Code Playgroud)
然而,由于直接依赖链,另一个可以正常工作:
$ aptitude why vlc-bin
c vlc Depends vlc-bin
Run Code Online (Sandbox Code Playgroud)
注意c
这意味着该软件包已被删除,但其配置文件仍然存在于我的系统中,因此很有可能(在本例中为 100%)vlc-bin
由vlc
.
现在让我们回到我们的工作,找出为什么libqt5x11extras5
我们的 Ubuntu 上存在:
$ apt-cache rdepends libqt5x11extras5 | xargs dpkg -l |& grep -e '^i' -e '^rc'
Run Code Online (Sandbox Code Playgroud)
usingapt-cache rdepends
我正在寻找依赖于 的所有软件包libqt5x11extras5
,然后我正在寻找已安装或已安装在我的系统上的软件包,使用dpkg
的组合grep
,结果是:
ii libqt5x11extras5
ii vlc-plugin-qt
Run Code Online (Sandbox Code Playgroud)
看?我们发现这个包与我们autoremove
列表中的另一个包相关:vlc-plugin-qt
,最后:
$ aptitude why vlc-plugin-qt
c vlc
Run Code Online (Sandbox Code Playgroud)
我们回到了vlc
.
归档时间: |
|
查看次数: |
681 次 |
最近记录: |