Debian

如何在 Debian 中完全刪除元包

  • May 7, 2013

有沒有辦法刪除元包及其所有包?元包的子集是完全不依賴元包的包。這就是為什麼如果刪除一個元包,只有包的元包子集不會被刪除。

例如 metapackageapache2包含一些安裝包,如果 install apache2。我apt-get install apache2在 shell 中使用了該命令,synaptic並安裝了一些軟體包。現在,如果我apache2通過apt-get autoremove apache2命令刪除元包或僅synaptic刪除apache2包,則不會刪除作為元包子集的其他包。

在我看來,最好的方法是刪除元包中的所有包。如何解決問題?

據我所知apache2不是metapackage。各種包都有依賴關係,因此安裝apache2也會導致安裝其他包,但這不會使它們成為元包。

無論如何,我不確定您到底想達到什麼目標,所以我會給您一些選擇:

  1. 如果你想刪除不再需要的包,例如那些被你安裝apache2並且現在你已經刪除它不再需要的東西,使用autoremove
apt-get autoremove
  1. 如果你真的想刪除一個真正的元包安裝的所有包,你可以這樣做(以wicd元包為例):

一世。通過搜尋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

ii. 您可以對其進行解析以僅獲取包名稱:

$ 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

引用自:https://unix.stackexchange.com/questions/75002