{"id":3419,"date":"2016-03-10T17:34:55","date_gmt":"2016-03-10T16:34:55","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=3419"},"modified":"2016-03-12T14:09:56","modified_gmt":"2016-03-12T13:09:56","slug":"ubuntu-paketupdates-auf-dem-geraet-ist-kein-speicherplatz-mehr-verfuegbar","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/ubuntu-paketupdates-auf-dem-geraet-ist-kein-speicherplatz-mehr-verfuegbar\/","title":{"rendered":"Ubuntu Paketupdates: Auf dem Ger\u00e4t ist kein Speicherplatz mehr verf\u00fcgbar"},"content":{"rendered":"<p>Beim regelm\u00e4\u00dfigen Aktualisieren der Pakete eines Ubuntu-Servers f\u00e4llt auf, dass f\u00fcr ein Kernelupdate unerf\u00fcllte Abh\u00e4ngigkeiten bestehen. F\u00fcr gew\u00f6hnlich wird dies mit dem Befehl<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\napt-get install -f\r\n<\/pre>\n<p>behoben, was jedoch in diesem Fall nicht klappte: Die Paketverwaltung quittiert ihren Dienst mit der Fehlermeldung\u00a0<strong>Extrahierte Daten f\u00fcr \u00bb.\/boot\/config-3.19.0-49-generic\u00ab k\u00f6nnen nicht nach \u00bb\/boot\/config-3.19.0-49-generic.dpkg-new\u00ab kopiert werden: Es konnte nicht geschrieben werden (Auf dem Ger\u00e4t ist kein Speicherplatz mehr verf\u00fcgbar)<\/strong>.\u00a0Klarheit schafft ein Blick auf die Speicherauslastung der Partitionen:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nDateisystem                Gr\u00f6\u00dfe Benutzt Verf. Verw% Eingeh\u00e4ngt auf\r\n\/dev\/sda1                   236M    225M     0  100% \/boot\r\n<\/pre>\n<p>Die Boot-Partition ist voll,\u00a0daher schl\u00e4gt auch das Kernal-Update fehl.\u00a0Warum wird schnell klar, wenn man die Anzahl installierter Kernel-Pakete sowie deren Versionsspektrum betrachtet:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n~$ dpkg -l | grep linux-image\r\nii  linux-image-3.19.0-25-generic       3.19.0-25.26~14.04.1             amd64        Linux kernel image for version 3.19.0 on 64 bit x86 SMP\r\nii  linux-image-3.19.0-26-generic       3.19.0-26.28~14.04.1             amd64        Linux kernel image for version 3.19.0 on 64 bit x86 SMP\r\nii  linux-image-3.19.0-28-generic       3.19.0-28.30~14.04.1             amd64        Linux kernel image for version 3.19.0 on 64 bit x86 SMP\r\nii  linux-image-3.19.0-30-generic       3.19.0-30.34~14.04.1             amd64        Linux kernel image for version 3.19.0 on 64 bit x86 SMP\r\nii  linux-image-3.19.0-31-generic       3.19.0-31.36~14.04.1             amd64        Linux kernel image for version 3.19.0 on 64 bit x86 SMP\r\nii  linux-image-3.19.0-32-generic       3.19.0-32.37~14.04.1             amd64        Linux kernel image for version 3.19.0 on 64 bit x86 SMP\r\nii  linux-image-3.19.0-33-generic       3.19.0-33.38~14.04.1             amd64        Linux kernel image for version 3.19.0 on 64 bit x86 SMP\r\nii  linux-image-extra-3.19.0-25-generic 3.19.0-25.26~14.04.1             amd64        Linux kernel extra modules for version 3.19.0 on 64 bit x86 SMP\r\nii  linux-image-extra-3.19.0-26-generic 3.19.0-26.28~14.04.1             amd64        Linux kernel extra modules for version 3.19.0 on 64 bit x86 SMP\r\nii  linux-image-extra-3.19.0-28-generic 3.19.0-28.30~14.04.1             amd64        Linux kernel extra modules for version 3.19.0 on 64 bit x86 SMP\r\nii  linux-image-extra-3.19.0-30-generic 3.19.0-30.34~14.04.1             amd64        Linux kernel extra modules for version 3.19.0 on 64 bit x86 SMP\r\nii  linux-image-extra-3.19.0-31-generic 3.19.0-31.36~14.04.1             amd64        Linux kernel extra modules for version 3.19.0 on 64 bit x86 SMP\r\nii  linux-image-extra-3.19.0-32-generic 3.19.0-32.37~14.04.1             amd64        Linux kernel extra modules for version 3.19.0 on 64 bit x86 SMP\r\niF  linux-image-extra-3.19.0-33-generic 3.19.0-33.38~14.04.1             amd64        Linux kernel extra modules for version 3.19.0 on 64 bit x86 SMP\r\niU  linux-image-extra-3.19.0-37-generic 3.19.0-37.42~14.04.1             amd64        Linux kernel extra modules for version 3.19.0 on 64 bit x86 SMP\r\niU  linux-image-extra-3.19.0-49-generic 3.19.0-49.55~14.04.1             amd64        Linux kernel extra modules for version 3.19.0 on 64 bit x86 SMP\r\niU  linux-image-generic-lts-vivid       3.19.0.49.34                     amd64        Generic Linux kernel image\r\n<\/pre>\n<p>Es ist also Aufr\u00e4umen angesagt. Daf\u00fcr ermitteln wir als erstes die aktuell installierte Kernel-Version, damit wir diese nicht auch entfernen &#8211; Denn die braucht das System selbstverst\u00e4ndlich.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n~$ uname -r\r\n3.19.0-33-generic\r\n<\/pre>\n<p>Auf diesem System ist also <strong>3.19.0-33<\/strong> installiert. Theoretisch k\u00f6nnen wir nun alle anderen Versionen entfernen. Es hat sich jedoch bew\u00e4hrt, f\u00fcr den Fall der F\u00e4lle die Vorversion auf dem System zu behalten. In diesem Beispiel also Releasenummer <strong>32<\/strong>. Die neueren Versionen zu entfernen w\u00e4re m\u00f6glich, macht aber wenig Sinn &#8211; schlie\u00dflich soll auf diese aktualisiert werden. Sollten an dieser Stelle nur eine einzelne Version \u00fcbrig bleiben die gel\u00f6scht werden muss, kann man dies manuell durch Eingabe von<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo apt-get purge linux-image-x.x.x-xx-generic\r\n<\/pre>\n<p>erledigen. Wobei x hierbei als Platzhalter f\u00fcr die konkrete Version fungiert, wie <strong>3.19.0-25<\/strong> als Beispiel. Mehrere Versionen zu entfernen endet dagegen in l\u00e4stiger monotoner Kopierarbeit, die sich vereinfachen l\u00e4sst:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\nsudo apt-get purge linux-image-3.19.0-{25,26,28,30,31}-generic\r\n<\/pre>\n<p>Damit werden die in den Klammern angegebenen Revisionen entfernt. In diesem Beispiel also alle Kernels, die \u00e4lter als die Vorversion des aktuell installierten sind.<\/p>\n<h3><strong>Wenn sich die Pakete nicht entfernen lassen<\/strong><\/h3>\n<p>Mit etwas Gl\u00fcck ist das Problem damit schon behoben. M\u00f6glicherweise lassen sich die Pakete aber\u00a0aufgrund von gegenseitigen Abh\u00e4ngigkeiten gar nicht entfernen, wie in diesem Fall:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n:~$ sudo apt-get purge linux-image-3.19.0-25-generic\r\nPaketlisten werden gelesen... Fertig\r\nAbh\u00e4ngigkeitsbaum wird aufgebaut.\r\nStatusinformationen werden eingelesen.... Fertig\r\nProbieren Sie \u00bbapt-get -f install\u00ab, um dies zu korrigieren:\r\nDie folgenden Pakete haben unerf\u00fcllte Abh\u00e4ngigkeiten:\r\n linux-image-extra-3.19.0-25-generic : H\u00e4ngt ab von: linux-image-3.19.0-25-generic soll aber nicht installiert werden\r\n linux-image-extra-3.19.0-37-generic : H\u00e4ngt ab von: linux-image-3.19.0-37-generic soll aber nicht installiert werden\r\n linux-image-extra-3.19.0-49-generic : H\u00e4ngt ab von: linux-image-3.19.0-49-generic soll aber nicht installiert werden\r\n<\/pre>\n<p>In diesem Fall scheint es nur einen\u00a0eher unsch\u00f6nen Workaround zu geben: Die Dateien der alten Kernel manuell aus der \/boot Partition entfernen. Dazu wechselt man mittels cd auf die Partition und entfernt die mit <strong>initrd<\/strong> beginnenden Dateien, die \u00e4lter sind als der installierte Kernel plus Vorversion.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n:\/boot$ ls -lh | grep initrd\r\ninsgesamt 120M\r\n-rw-r--r-- 1 root root  20M Aug 22  2015 initrd.img-3.19.0-25-generic\r\n-rw-r--r-- 1 root root  20M Aug 23 06:39 initrd.img-3.19.0-26-generic\r\n-rw-r--r-- 1 root root  20M Sep  9 06:45 initrd.img-3.19.0-28-generic\r\n-rw-r--r-- 1 root root  20M Okt  6 06:49 initrd.img-3.19.0-30-generic\r\n-rw-r--r-- 1 root root  20M Okt 21 06:44 initrd.img-3.19.0-31-generic\r\n-rw-r--r-- 1 root root  20M Nov  5 06:47 initrd.img-3.19.0-32-generic\r\n-rw-r--r-- 1 root root  20M Nov 11 06:38 initrd.img-3.19.0-33-generic\r\n<\/pre>\n<p>Hier also alle Dateien bis <strong>32-generic<\/strong>, die manuell mittels <strong>rm<\/strong> entfernt werden. Das Resultat sieht gut aus:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n:\/boot$ df -h\r\nDateisystem                Gr\u00f6\u00dfe Benutzt Verf. Verw% Eingeh\u00e4ngt auf\r\n\/dev\/sda1                   236M    125M   99M   56% \/boot\r\n<\/pre>\n<p>Nun k\u00f6nnen wir mittels<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\napt-get install -f\r\n<\/pre>\n<p>die fehlenden Abh\u00e4ngigkeiten sauber installieren sowie anschlie\u00dfend die alten Kernel-Versionen \u00fcber die Paketverwaltung entfernen. Im besten Falle m\u00fcsst ihr dies nun nicht mehr manuell tun, sondern k\u00f6nnt \u00fcber autoremove automatisch alle alten Kernel entfernen:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\n:\/boot$ sudo apt-get autoremove\r\nPaketlisten werden gelesen... Fertig\r\nAbh\u00e4ngigkeitsbaum wird aufgebaut.\r\nStatusinformationen werden eingelesen.... Fertig\r\nDie folgenden Pakete werden ENTFERNT:\r\n  linux-headers-3.19.0-26 linux-headers-3.19.0-26-generic\r\n  linux-headers-3.19.0-28 linux-headers-3.19.0-28-generic\r\n  linux-headers-3.19.0-30 linux-headers-3.19.0-30-generic\r\n  linux-headers-3.19.0-31 linux-headers-3.19.0-31-generic\r\n  linux-image-3.19.0-26-generic linux-image-3.19.0-28-generic\r\n  linux-image-3.19.0-30-generic linux-image-3.19.0-31-generic\r\n  linux-image-extra-3.19.0-28-generic linux-image-extra-3.19.0-30-generic\r\n  linux-image-extra-3.19.0-31-generic linux-image-extra-3.19.0-32-generic\r\n0 aktualisiert, 0 neu installiert, 20 zu entfernen und 113 nicht aktualisiert.\r\nNach dieser Operation werden 1.439 MB Plattenplatz freigegeben.\r\nM\u00f6chten Sie fortfahren? &#x5B;J\/n]\r\n<\/pre>\n<p>Alternativ entfernt die jeweiligen Kernel-Versionen manuell \u00fcber <strong>apt-get purge<\/strong> wie oben beschrieben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beim regelm\u00e4\u00dfigen Aktualisieren der Pakete eines Ubuntu-Servers f\u00e4llt auf, dass f\u00fcr ein Kernelupdate unerf\u00fcllte Abh\u00e4ngigkeiten bestehen. F\u00fcr gew\u00f6hnlich wird dies mit dem Befehl apt-get install -f behoben, was jedoch in diesem Fall nicht klappte: Die Paketverwaltung quittiert ihren Dienst mit der Fehlermeldung\u00a0Extrahierte Daten f\u00fcr \u00bb.\/boot\/config-3.19.0-49-generic\u00ab k\u00f6nnen nicht nach \u00bb\/boot\/config-3.19.0-49-generic.dpkg-new\u00ab kopiert werden: Es konnte nicht geschrieben &#8230;<\/p>\n","protected":false},"author":5,"featured_media":3427,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[391],"tags":[205,394,393,392],"class_list":["post-3419","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux-server","tag-boot","tag-boot-partition","tag-paketupdates","tag-ubuntu"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/3419","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=3419"}],"version-history":[{"count":6,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/3419\/revisions"}],"predecessor-version":[{"id":3426,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/3419\/revisions\/3426"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/3427"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=3419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=3419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=3419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}