Apt kann den teilweise installierten Kernel nicht entfernen und kann keine anderen Pakete installieren

7

Apt kann nach einem scheinbar teilweisen Kernel-Upgrade keine neuen Pakete aktualisieren oder installieren. Ich habe versucht, apt-get purge -f linux-image-extra-3.19.0-22-genericwas mit einer sehr ähnlichen Fehlermeldung fehlschlägt. Der Computer stürzt auch beim Booten in die neueste Kernel-Version ab (Standard in Grub), aber frühere Versionen funktionieren einwandfrei.

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be REMOVED:
  linux-image-3.19.0-22-generic linux-image-extra-3.19.0-22-generic
The following packages will be upgraded:
  linux-cloud-tools-common
1 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
2 not fully installed or removed.
Need to get 0 B/24.3 kB of archives.
After this operation, 208 MB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 453815 files and directories currently installed.)
Removing linux-image-extra-3.19.0-22-generic (3.19.0-22.22) ...
depmod: FATAL: could not load /boot/System.map-3.19.0-22-generic: No such file or directory
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/dkms 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
update-initramfs: Generating /boot/initrd.img-3.19.0-22-generic
grep: /boot/config-3.19.0-22-generic: No such file or directory
depmod: WARNING: could not open /tmp/mkinitramfs_6gldfB/lib/modules/3.19.0-22-generic/modules.order: No such file or directory
depmod: WARNING: could not open /tmp/mkinitramfs_6gldfB/lib/modules/3.19.0-22-generic/modules.builtin: No such file or directory
run-parts: executing /etc/kernel/postinst.d/pm-utils 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/update-notifier 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
Generating grub configuration file ...
ERROR: cannot determine partition label for rootfs /dev/sda9
run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1
dpkg: error processing package linux-image-extra-3.19.0-22-generic (--remove):
 subprocess installed post-removal script returned error exit status 1
Removing linux-image-3.19.0-22-generic (3.19.0-22.22) ...
Examining /etc/kernel/postrm.d .
run-parts: executing /etc/kernel/postrm.d/initramfs-tools 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
update-initramfs: Deleting /boot/initrd.img-3.19.0-22-generic
run-parts: executing /etc/kernel/postrm.d/zz-update-grub 3.19.0-22-generic /boot/vmlinuz-3.19.0-22-generic
Generating grub configuration file ...
ERROR: cannot determine partition label for rootfs /dev/sda9
run-parts: /etc/kernel/postrm.d/zz-update-grub exited with return code 1
Failed to process /etc/kernel/postrm.d at /var/lib/dpkg/info/linux-image-3.19.0-22-generic.postrm line 328.
dpkg: error processing package linux-image-3.19.0-22-generic (--remove):
 subprocess installed post-removal script returned error exit status 1
Errors were encountered while processing:
 linux-image-extra-3.19.0-22-generic
 linux-image-3.19.0-22-generic
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ich muss apt wieder zum Laufen bringen und in einen Zustand bringen, in dem zukünftige Kernel installiert werden können. Das korrekte Löschen des 3.19.0-22-Kernels wäre nett, aber unnötig. Fordern Sie weitere Informationen an und bedanken Sie sich im Voraus

--Edits--

Die Antwort von 0x450 funktioniert für alle Pakete, die nicht mit dem Kernel zusammenhängen. Kernel- und Grub-Updates bringen apt und dpkg in einen fehlerhaften Zustand zurück. Ich habe diese wiederkehrende Fehlermeldung bemerkt:

Generating grub configuration file ... ERROR: cannot determine partition label for rootfs /dev/sda9

Könnte dies ein Problem im Zusammenhang mit Grub-Konfigurationsdateien sein?


sudo apt-get install --reinstall linux-image-extra-3.19.0-22-genericErgebnisse in einem sehr ähnlichen Fehlern (die angezeigt werden können hier )

sudo dpkg --configure -aerzeugt diesen Fehler

sudo apt-get purge linux-image-extra-3.19.0-22-genericerzeugt diesen Fehler

David
quelle
Wie wäre es sudo apt-get install --reinstall linux-image-extra-3.19.0-22-genericund dann eine Entfernung danach?
Noleti
Es wird ein ähnlicher Fehler zurückgegeben ( pastebin.com/Pw0AyGVk ). Ich werde auch den Link zum Protokoll in den ursprünglichen Beitrag setzen
David
Das richtige Löschen des Kernels wäre schön, aber es ist weitaus wichtiger, dass es richtig funktioniert. Ich kann gut von anderen Kerneln booten.
David
Zur Verdeutlichung muss apt auch in Zukunft in der Lage sein, neue Kernel zu installieren. Ich interessiere mich nicht besonders für 3.19.0-22
David

Antworten:

12

Ich hatte mit genau dem gleichen Problem zu kämpfen, aber die kaputten Kernel-Pakete waren Version 3.13.0.57.

Überprüfen Sie das Problem:

Überprüfen Sie dpkg statusdie Pakete:

dpkg --status linux-image-3.19.0-22-generic
dpkg --status linux-image-extra-3.19.0-22-generic

Wenn die Ausgangszustände , dass die Pakete in einem schlechten Zustand sind, dh die Hälfte installiert oder nicht vollständig installiert , das bedeutet , dass sie gebrochen haben apt-getund dpkgjeweils.

Die Lösung:

Die Einträge der infizierten Kernel - Pakete müssen manuell aus der Statusdatei gelöscht werden , dpkgum apt-getund dpkgsich normal funktionieren wieder. Die Schritte sind wie folgt:

  1. Stellen Sie sicher, dass Sie eine Sicherungskopie der Statusdatei erstellen, falls etwas schief geht.

    sudo cp /var/lib/dpkg/status /var/lib/dpkg/status.backup

  2. Öffnen Sie /var/lib/dpkg/statusmit Ihrem bevorzugten Texteditor und suchen und löschen Sie NUR die Referenzen der defekten Pakete. Sie dürfen nichts anderes löschen!

  3. Führen Sie aus sudo apt-get updateund sudo apt-get upgradestellen Sie sicher, dass alles repariert ist.

  4. Dieser Schritt ist optional, da die Pakete nicht mehr von den Paketmanagern verfolgt werden. Wenn Sie möchten, können Sie jedoch Speicherplatz freigeben, indem Sie sie löschen. Sie können sicher alle Einträge der defekten Kernel-Pakete in /bootund in manuell entfernen, /usr/srcaber SEHR VORSICHTIG sein . Stellen Sie sicher, dass Sie nur die Dateien / Ordner berühren, die in Ihrem Fall der Version 3.19.0-22 entsprechen .

0x450
quelle
Sagen Sie mir, ob dies Ihr Problem behoben hat. Bitte lassen Sie mich auch wissen, wenn Sie boot repairkürzlich verwendet haben, weil ich den Verdacht habe, dass es dieses Problem verursacht, oder zumindest in meinem Fall war es der Verursacher.
0x450
Vielen Dank. Dies funktioniert für alle Installationen mit Ausnahme derjenigen, die Kernel-Installationen installieren. Wenn die Dinge nicht funktionieren, habe ich den wiederkehrenden Fehler bemerkt Generating grub configuration file ... ERROR: cannot determine partition label for rootfs /dev/sda9. Irgendwelche Ideen, wie man das behebt?
David
Was Sie sagen möchten, ist, dass die von mir vorgeschlagene Lösung bei den Kernel-Paketen nicht funktioniert hat? Wann genau ist diese Fehlermeldung aufgetreten - ich meine nach welchem ​​Befehl / welcher Aktion?
0x450
Es scheint immer da gewesen zu sein, auch in den ursprünglichen Fehlermeldungen In meiner Frage. Mir ist gerade aufgefallen, dass es überall zu sein scheint.
David
1
Sir, @ 0x450, Sie haben gerade den Tag gerettet. Vielen Dank!
Fennec
1

Ursache

Das Hauptproblem scheint darin zu liegen, dass /boot/System.map-3.19.0-22-generices fehlt, was eine Neukonfiguration / Entfernung des Pakets verhindert.

Lösungsvorschläge

Mein erster Vorschlag war sudo apt-get install --reinstall linux-image-extra-3.19.0-22-generic

Da dies anscheinend fehlschlägt ("kann nicht zur Hälfte installiert werden"), würde ich vorschlagen, dies etwas energischer zu tun , z. B. mit den folgenden Optionen

sudo dpkg --remove --force-remove-reinstreq linux-image-extra-3.19.0-22-generic

Dieser Vorschlag basiert auf dieser Antwort.

Alternative: Manuelle Reparatur?

Alternativ können Sie auch versuchen, diese Datei manuell zu reparieren? Vielleicht wird es von apt-get entpackt, während versucht wird, es neu zu installieren? Es ist ein bisschen schwierig für mich, auf meinem System zu replizieren

Noleti
quelle
0

Ich denke du solltest rennen

sudo dpkg --configure -a

gefolgt von dem, was bereits erwähnt wurde:

sudo apt-get purge linux-image-extra-3.19.0-22-generic
JEL
quelle
Diese beiden Befehle erzeugen diesen bzw. diesen Fehler ... Vielen Dank
David
0

Es stellte sich heraus, dass das Problem durch einen Absturz von grub-mkconfig mit der Fehlermeldung verursacht wurde Generating grub configuration file ... ERROR: cannot determine partition label for rootfs /dev/sda9 (sda9 hielt mein fs-Stammverzeichnis).

Apt stürzte ab, weil beim Versuch, neue Kernel zu installieren, grub-mkconfig ausgeführt wurde, um sie dem Startmenü hinzuzufügen. Es war eigentlich kein Problem mit apt, sondern mit grub.

Ich habe es behoben, indem ich ubuntu neu installiert und ext3 anstelle von ext4 für die Partition verwendet habe, die mein Dateisystemstamm enthält. Mein Home-Verzeichnis befindet sich jedoch immer noch in einer eigenen ext4-Partition, sodass es nicht betroffen zu sein scheint.

Die Antwort von 0x450 funktioniert gut als vorübergehende Korrektur, so dass man apt wieder verwenden kann. Das Root-Problem wird dadurch jedoch nicht behoben.

David
quelle
Wie haben Sie Ubuntu neu installiert? Könnten Sie Befehle teilen? Oder meinst du, du hast das gesamte System ausgelöscht? ): Danke
Jorge Orpinel
Ich habe ein Installationsimage verwendet, dann die Root-Partition gelöscht und sie angewiesen, die vorhandene / home-Partition zu verwenden. Ich erinnere mich an keinen der Befehle, die ich mehr verwendet habe. Ich habe das Problem vor gut einem Jahr behoben
David,
-1

Sie können remove anstelle von purge verwenden, dann den Kernel aktualisieren und dies in das Terminal eingeben:

 sudo apt-get -f remove linux-image-extra-3.19.0-22-generic

Löschen Sie dann die Datei sources.list, geben Sie die Einstellungen ein und aktualisieren und schraffieren Sie die gesamte chanoische Liste und schließen Sie sie erneut.

und installieren Sie dann den neuesten Kernel neu und geben Sie diesen in das Terminal ein:

sudo apt-get install linux-amd64_ linux-efi
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install aptitude
sudo aptitude linux-efi

und es könnte auf diese Weise gut funktionieren.

Michael
quelle