Ubuntu: zuviele Kernels verstopfen die Boot-Partition

Neben meinem Windows-Rechner, auf dem ich im Moment hauptsächlich programmiere, habe ich noch einen kleinen Ubuntu-Server laufen, der mir als Media-Server dient, nebenbei aber auch noch z.B. ein SVN-Repository zur Verfügung steht. Gestern Abend nun wollte ich ein kleines Programm übersetzen das ich gerade für eine Dateikonvertierung brauchte, das aber nur als Linux-Source zur Verfügung stand. Dafür mussten noch einige Pakete nachinstalliert werden. Eigentlich kein Problem, aber nichts ging: ständig meldete apt-get, es stehe nicht mehr genügend Speicherplatz zur Verfügung.

Das kann ja mal vorkommen, dass die Systempartition voll ist, dachte ich und sah nach:

df --si

liefert die aktuelle Belegung aller Partitionen in lesbarer Schreibweise. In der Root-Partition, wohin die Pakete installiert werden, waren noch über 5GB Platz. Daran konnte es also nicht liegen.

Eine Suche im Netz lieferte einige Hinweise, wie z.B. dieser Thread im ubuntuusers-Forum, aber noch nicht die finale Lösung. apt-get wollte ein Paket mit Kernel-Headern, linux-headers-3.2.0-84-generic-pae, nachinstallieren, das als Abhängigkeit benötigt wird. Anscheinend werden aber Teile davon in der Boot-Partition abgelegt, die wesentlich kleiner ist. Und zur Sicherheit behält Ubuntu bei einem Update die alten Kernels, falls mal etwas schief läuft, was schließlich die Boot-Partition zum Überlaufen bringt. Der folgende Befehl schaffte Klarheit:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

Als Ergebnis werden alle Pakete ausgegeben, die mit dem Linux-Kernel zu tun haben. Bei mir waren das etwa 40.

Die Lösung für dieses Problem liegt nahe, sollte man denken: einfach die alten Pakete löschen. Aber so einfach war es leider nicht.

sudo apt-get purge <Paketname>

sollte eigentlich die genannten Pakete entfernen. apt-get ist allerdings so schlau und versucht auch hier, zunächst alle Abhängigkeiten aufzulösen, und damit wiederum das neue Header-Paket zu installieren, für das aber nicht genügend Platz vorhanden ist. Ein schöner Teufelskreis. Des Rätsels Lösung ist, anstatt mit apt-get direkt mit dpkg die Entfernung der alten Pakete zu erzwingen:

dpkg -r --force-depends <Paketname>

Ist man so einige der alten Pakete losgeworden verschwindet auch die Meldung, dass zu wenig Speicherplatz verfügbar sei wenn man neue Pakete installiert.

Schreibe einen Kommentar