有什么方法可以删除元包及其所有包吗?元包的子集是完全不依赖于元包的包。这就是为什么如果删除一个元包,则不会删除该包的元包子集。
例如,metapackageapache2
包含一些在 install 时将安装的软件包apache2
。我apt-get install apache2
在 shell 中使用了该命令,synaptic
并安装了一些软件包。现在,如果我apache2
通过apt-get autoremove apache2
命令删除元包,或者仅synaptic
删除apache2
包,并且作为元包子集的其他包不会被删除。
在我看来,最好的方法是删除元包中的所有包。如何解决问题?
答案1
据我所知apache2
不是元包。各种包都有依赖关系,因此安装apache2
也会导致安装其他包,但这并不会使它们成为元包。
无论如何,我不确定您到底想实现什么目标,所以我会给您一些选择:
如果您想删除不再需要的软件包,例如由您安装的软件包,
apache2
并且在您删除它后不再需要,请使用autoremove
:apt-get autoremove
如果你确实想删除真正的元包安装的所有包,你可以这样做(以
wicd
元包为例):我。通过搜索日志找到metapackage安装的包
apt
:$ grep -A 3 wicd /var/log/apt/history.log Commandline: apt-get install wicd Install: rfkill:amd64 (0.4-1, automatic), wicd:amd64 (1.7.2.4-4), python-wicd:amd64 (1.7.2.4-4, automatic), wicd-daemon:amd64 (1.7.2.4-4, automatic), wicd-gtk:amd64 (1.7.2.4-4, automatic) End-Date: 2013-05-07 18:10:24
二.您可以解析它以仅获取包名称:
$ grep -A 3 wicd /var/log/apt/history.log | perl -ne 's/Install:*// && do { @a=(/\s+([^\s]+?):/g); print "@a\n" }' rfkill wicd python-wicd wicd-daemon wicd-gtk
iii. 现在您可以删除它们(我正在打印命令
apt
而不是执行它,以便您可以看到它将首先卸载什么):$ grep -A 3 wicd /var/log/apt/history.log | perl -ne 's/Install:*// && do { @a=(/\s+([^\s]+?):/g); print "apt-get remove @a\n" }' apt-get remove rfkill wicd python-wicd wicd-daemon wicd-gtk