
25. Juni 2009 10:14
(zuletzt bearbeitet: 25. Juni 2009 10:17)
Bei einen normalen "apt-get remove" oder besser "aptitude remove" werden die Konfigdateien bewusst nicht entfernt. Wenn du auch die Konfigurationsdateien löschen möchtest musst du entweder "apt-get remove --purge" oder besser "aptitude purge" machen.
Ansonsten schreibt man hinter apt-get oder aptitude welche Pakete gelöscht werden. An deiner Stelle steht dort folgendes:
$(dpkg -l apache* | grep ii | awk '{print $2}')
$() => bedeutet der inhalt wird ausgeführt und die rückgabe wird hierdurch ersetzt. "dpkg -l apache*" bedeutet hierbei das alle pakete angezeigt werden die mit "apache beginnen". "dpkg -l" liefert alle Packete und "apache*" ist ein zusätzlicher Filter. Allerdiengs zeigt "dpkg -l" auch Packete an die du schonmal installiert hast. Die Rückgabe des Befehls wird dann an grep weitergeleitet. grep geht jede zeile durch und gibt nur die Zeilen aus auf dem die regex matcht. Seine Regex ist hier "ii". Daher es filtert nochmals und zeigt nur die Zeilen an wo ein "ii" vorkommt. Der Sinn dahinter "dpkg -l" zeigt am anfang einen Status an, und der Status "ii" bedeutet "installiert". Etwas besser wäre die Regex "^ii" da nur das "ii" am afang interessant ist, nicht irgendwo auf der kompletten Zeile. Ansonsten wird diese ausgabe nochmals weitergeleitet zu awk. Und awk splittet jede Zeile in Spalten auf, und mit $2 wird die zweite Spalte ausgegeben. Und das wäre der Paketnamen.
Das ganze Konstrukt übergibt also alle Pakete die installiert sind und mit apache anfangen dem apt-get befehl "apt-get remove --purge" und dieser löscht sie inklusive Config Dateien.
"&& sudo apt-get install apache2"
Das && bedeutet das das nachfolgende nur dann ausgeführt wird, wenn das vorherige erfolgreich war, sprich wenn die deinstallation erfolgreich war, dann wird wieder "apache2" installiert.
Das ganze ist eine komplizierte Version für das einfachere
"aptitude purge '~iapache' && sudo aptitude install apache2"