Debian
如何在 Debian 中完全刪除元包
有沒有辦法刪除元包及其所有包?元包的子集是完全不依賴元包的包。這就是為什麼如果刪除一個元包,只有包的元包子集不會被刪除。
例如 metapackage
apache2
包含一些安裝包,如果 installapache2
。我apt-get install apache2
在 shell 中使用了該命令,synaptic
並安裝了一些軟體包。現在,如果我apache2
通過apt-get autoremove apache2
命令刪除元包或僅synaptic
刪除apache2
包,則不會刪除作為元包子集的其他包。在我看來,最好的方法是刪除元包中的所有包。如何解決問題?
據我所知
apache2
不是metapackage。各種包都有依賴關係,因此安裝apache2
也會導致安裝其他包,但這不會使它們成為元包。無論如何,我不確定您到底想達到什麼目標,所以我會給您一些選擇:
- 如果你想刪除不再需要的包,例如那些被你安裝
apache2
並且現在你已經刪除它不再需要的東西,使用autoremove
:apt-get autoremove
- 如果你真的想刪除一個真正的元包安裝的所有包,你可以這樣做(以
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