Alte Kernel können nicht gelöscht werden (Abhängigkeitsprobleme), aber /boot hat nicht genügend Speicherplatz

Alte Kernel können nicht gelöscht werden (Abhängigkeitsprobleme), aber /boot hat nicht genügend Speicherplatz

Ich verwende Ubuntu 14.04.4 LTS und versuche, mit apt-get ein neues Paket zu installieren. Leider erhalte ich bei jedem Versuch Meldungen wie:

The following packages have unmet dependencies:
 linux-image-extra-3.16.0-70-generic : Depends: linux-image-3.16.0-70-generic but it is not going to be installed
 linux-image-generic-lts-utopic : Depends: linux-image-3.16.0-70-generic but it is not going to be installed
 linux-signed-image-3.16.0-70-generic : Depends: linux-image-3.16.0-70-generic (= 3.16.0-70.90~14.04.1) but it is not going to be installed

Beim Googeln habe ich herausgefunden, dassDies kann durch Platzmangel auf der Bootpartition verursacht werden(und tatsächlich wird 100 % dfangezeigt /boot). Jedes Mal, wenn ich jedoch versuche, die apt-getBefehle in der dort akzeptierten Antwort auszuführen, erhalte ich dieselben Fehler wie oben.

Auf der Suche nach einer anderen Lösung, die nicht verwendet wurde apt-get, stieß ich aufdieser Beitrag, das empfiehlt, Dinge wie sudo dpkg --purge linux-image-4.2.0-15-genericauf alten, ungenutzten Kerneln zu verwenden.

dpkg -l | tail -n +6 | grep -E 'linux-image-[0-9]+' | grep -Fv $(uname -r)(aus dem oben genannten Beitrag) zeigt, dass ich mehrere alte Kernel im piZustand habe (gewünscht bereinigt, Zustand ist installiert gemäßDas)

uname -rsagt mir, dass der von mir verwendete Kernel 3.16.0-62-generic ist, also dachte ich, ich könnte diese alten Kernel bedenkenlos entfernen. Wenn ich dies jedoch mit Dingen wie versuche, führt dies sudo dpkg --purge linux-image-3.16.0-49-genericzu:

dpkg: error processing package linux-image-3.16.0-49-generic (--purge):
 dependency problems - not removing
Errors were encountered while processing:
 linux-image-3.16.0-49-generic

Garrg! Ich bin mit meinem Latein am Ende und überfordert (weiß nicht wirklich viel über dpkg oder apt-get), also brauche ich etwas Hilfe.

Fragen:

  1. Warum kann ich die alten Kernel nicht mit deinstallieren dpkg?

  2. Wenn diese Frage nicht direkt gelöst werden kann, möchte ich letztendlich wohl wissen:Was muss ich tun, um in einen Zustand zu gelangen, in dem ich wieder neue Pakete installieren kann?


Andere Dinge, die ich versucht habe:

  • sudo apt-get autoremove: führt zum ursprünglichen Fehler über nicht erfüllte Abhängigkeiten
  • sudo apt-get -f autoremove: ergibt:
Auspacken von linux-image-3.16.0-70-generic (3.16.0-70.90~14.04.1) ...
dpkg: Fehler beim Verarbeiten des Archivs /var/cache/apt/archives/linux-image-3.16.0-70-generic_3.16.0-70.90~14.04.1_amd64.deb (--unpack):
 extrahierte Daten für „./boot/vmlinuz-3.16.0-70-generic“ können nicht nach „/boot/vmlinuz-3.16.0-70-generic.dpkg-new“ kopiert werden: Schreiben fehlgeschlagen (auf dem Gerät ist kein Platz mehr frei)
Es wurde kein Apport-Bericht geschrieben, da die Fehlermeldung einen Fehler bei voller Festplatte anzeigt.
                                                                              dpkg-deb: Fehler: Unterprozess „Paste“ wurde durch Signal beendet (defekte Pipe)
/etc/kernel/postrm.d wird untersucht.
run-parts: Ausführen von /etc/kernel/postrm.d/initramfs-tools 3.16.0-70-generic /boot/vmlinuz-3.16.0-70-generic
run-parts: Ausführen von /etc/kernel/postrm.d/zz-update-grub 3.16.0-70-generic /boot/vmlinuz-3.16.0-70-generic
Bei der Verarbeitung sind Fehler aufgetreten:
 /var/cache/apt/archives/linux-image-3.16.0-70-generic_3.16.0-70.90~14.04.1_amd64.deb
E: Der Unterprozess /usr/bin/dpkg hat einen Fehlercode zurückgegeben (1)

Notiz: Ich habe diese Frage migriert von„Unix- und Linux-Stack-Exchange“

Antwort1

Wird verwendet uname -r, um Ihren aktuell ausgeführten Kernel anzuzeigen. LÖSCHEN SIE NICHTS mit dieser Versionsnummer.

Sie können herausfinden, /bootzu welchen Paketen die Kernel gehören:

for i in /boot/vmlinuz* ; do 
    dpkg -S $i| egrep -v $(uname -r)
done

Sie können diese Pakete entfernen mitsudo apt-get purge Paketnamen ....

Sie können weitere Pakete finden, die mit den zu löschenden Kerneln in Zusammenhang stehen, indem Sie nach anderen Paketen mit der gleichen Versionsnummer suchen:

So extrahieren Sie die Versionsnummern:

for i in /boot/vmlinuz* ; do 
    dpkg -S $i | egrep -v $(uname -r)
done |cut -d- -f3-4  

So finden Sie andere Pakete mit denselben Versionsnummern:

for j in $(
    for i in /boot/vmlinuz* ; do 
        dpkg -S $i| egrep -v $(uname -r)
    done |cut -d- -f3-4 ) ; 
do 
     dpkg -l "*$j*" | egrep '^ii|^rc'
done  

Um das Löschen aller Kernel außer dem aktuellen Kernel und aller Pakete, deren Versionen mit den gelöschten Kerneln übereinstimmen (Gefahr, Wil Robinson):

Einfach anhängen

| awk '{print $2}' | xargs sudo apt-get --dry-run purge

zum vorherigen Codefragment. Wenn Sie sicher sind, dass es das gewünschte Ergebnis liefert, entfernen Sie es --dry-run.

Wenn Ihr /bootso ​​voll ist, dass Sie keine Pakete löschen können, können Sie etwas Platz schaffen, /bootindem Sie die älteste /boot/initrd.img*Datei löschen,

verwandte Informationen