Archiv für den Monat: Mai 2013

Debian sauber halten – Pakete mit rc Status vollständig entfernen

Debian zeichnet sich als konservative, aber sehr robuste und zuverlässige Distribution aus und war nicht zuletzt aus diesem Grund meine Wahl für einige Server-Systeme, die mittlerweile schon einige Jahre auf dem Buckel haben.

Mittlerweile wurde ein System zum dritten mal auf eine neues Major-Release gehoben und mit der Zeit sammelt sich allerhand historischer Datenmüll auf der Platte. Auch bei Desktop-Systemen mit kürzeren Release-Zyklen wie bei Ubuntu kann sich in wenigen Jahren viel Balast auftürmen.

Ein Weg, das System zu entschlacken ist das Löschen alter Konfigurationsdateien. Listet man durch dpkg -l  installierte Pakete auf, fällt der Status „rc“ bei einigen Zeilen auf. Bei rc ist das Paket nicht installiert, jedoch sind seine Konfigurationsdateien auf dem System vorhanden. Diese entstehen bei Technologiewechseln während Major-Upgrades oder durch das manuelle installieren und deinstallieren von Software.

Dieser Schlacke kann man einfach über folgende Kommandos untersuchen (Output ist gleich, rein aus Lernzwecken sind beide aufgeführt):

dpkg -l | grep ^rc | tr -s " " | cut -d " " -f 2
dpkg -l | grep ^rc | awk '{print $2}'

Beispiel Output:

dpkg -l | grep ^rc | awk '{print $2}'
automysqlbackup
libbind9-50
libdatrie0
libdevmapper1.02
libdns55

Es ist sehr wichtig, die Pakete manuell zu prüfen! Es kann auch false-positives durch z.B. manuell installierte Pakete geben, die nicht aus dem Repository installiert wurden.

Ist man sich seiner Sache sicher, können die Pakete bzw. ihre Konfigurationsdateien vollständig entfernt werden:

apt-get purge `dpkg -l | grep ^rc | awk '{print $2}'`

Beispiel Output:

apt-get purge `dpkg -l | grep ^rc | awk '{print $2}'`
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
automysqlbackup* libbind9-50* libdatrie0* libdevmapper1.02* libdns55*