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 % df
angezeigt /boot
). Jedes Mal, wenn ich jedoch versuche, die apt-get
Befehle 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-generic
auf 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 pi
Zustand habe (gewünscht bereinigt, Zustand ist installiert gemäßDas)
uname -r
sagt 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-generic
zu:
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:
Warum kann ich die alten Kernel nicht mit deinstallieren
dpkg
?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ängigkeitensudo 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, /boot
zu 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 /boot
so voll ist, dass Sie keine Pakete löschen können, können Sie etwas Platz schaffen, /boot
indem Sie die älteste /boot/initrd.img*
Datei löschen,