03 10月 2007

談談Ubuntu的apt-get remove

之前因為想要自己手動compile安裝apache, php, mysql,所以想說先將原本用apt-get install安裝的apache, php, mysql先移除,然後再上網將它們的source code抓下來編譯安裝

% apt-get remove apache2
% apt-get remove php5
% apt-get remove mysql

結果手動compile安裝好後,重新開機,結果開機後自動執行的apache竟然是原本apt-get install所安裝的路徑,整個覺得很怪,不是刪除了嗎...怎麼還能跑能跳的....=__="

原來,apt-get remove <package-name>它並不會將檔案刪除,他只是將dpkg中的清單裡的套件刪了而已,並不會將它的程式、config、檔案…等刪除,於是我加上了--purge這個參數,說明是說可以將相關檔案刪除。不過實際上,跟remove是一樣的道理,只是將dpkg中的套件名稱刪除而已。

因此,如果要將套件的全部檔案刪除的話,就必須用dpkg -P <package-name> (注意...是大寫P....)才行,但是這個指令不會自動一次將所以相關套件一次刪除,只會刪除指定的套件,因此,若是想要刪除乾淨的話,就要一個一個下指令刪除才行。

比如現在要完全刪除apache2以及相關套件,先用dpkg -l 看看我們裝了哪些跟apache2相關的套件

% dpkg -l | grep apache2
ii apache2
ii apache2-mpm-prefork
ii apache2-utils
ii apache2.2-common
ii libapache2-mod-php5

因此現在必須一個個刪除這些相關套件

% dpkg -P apache2 
% dpkg -P apach2-utils
....

只是要注意有些套件是存在相依性,A depend on B,所以要先將A刪除後才能刪B。
這樣子執行完後,apache2才算是完整的被刪除了。

沒有留言: