Um eine machen lange Geschichte kurz, bin ich mit einer Handvoll von unerwünschten, halb konfigurierten Bildpakete fest , dass ich versuche, sie wieder loszuwerden:
$ dpkg -l |grep linux-im
iF linux-image-3.13.0-100-generic 3.13.0-100.147 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF linux-image-3.13.0-101-generic 3.13.0-101.148 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF linux-image-3.13.0-92-generic 3.13.0-92.139 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF linux-image-3.13.0-93-generic 3.13.0-93.140 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iF linux-image-3.13.0-96-generic 3.13.0-96.143 i386 Linux kernel image for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-100-generic 3.13.0-100.147 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-101-generic 3.13.0-101.148 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-92-generic 3.13.0-92.139 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-93-generic 3.13.0-93.140 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
iH linux-image-extra-3.13.0-96-generic 3.13.0-96.143 i386 Linux kernel extra modules for version 3.13.0 on 32 bit x86 SMP
Diese Images sind in der Tat nutzlos, da mein 32-Bit-14.04-System in einem OpenVZ-Container lebt, der allein für den Kernel verantwortlich ist. Wie Sie sehen können, eine viel ältere:
$ uname -r
2.6.32-042stab116.2
Im Gegensatz zu den meisten ähnlichen Fragen, die sich darauf konzentrieren, wie alte Kernel-Images nach routinemäßigen Upgrades entfernt werden können, versuche ich hier, ALLE DIESEN 3.13-PAKETE VOLLSTÄNDIG ZU LÖSCHEN , die eigentlich gar nicht vorhanden sein sollten.
Hier ist eine Zusammenfassung meiner bisherigen Versuche.
Der Versuch , die Pakete zu entfernen / reinigen die üblichen Wege ( apt-get
, apt
, aptitude
, es spielt keine Rolle) scheint nicht zu arbeiten, aufgrund eines offensichtlichen Teufelskreis.
sudo apt-get purge linux-image-3.13.0-100-generic linux-image-3.13.0-101-generic linux-image-3.13.0-92-generic linux-image-3.13.0-93-generic linux-image-3.13.0-96-generic linux-image-extra-3.13.0-100-generic linux-image-extra-3.13.0-101-generic linux-image-extra-3.13.0-92-generic linux-image-extra-3.13.0-93-generic linux-image-extra-3.13.0-96-generic
Wie Sie der Ausgabe entnehmen können , wird nichts entfernt. Auf der anderen Seite aptitude
schafft es ein wenig weiter zu kommen:
sudo aptitude purge linux-image-3.13.0-100-generic linux-image-3.13.0-101-generic linux-image-3.13.0-92-generic linux-image-3.13.0-93-generic linux-image-3.13.0-96-generic linux-image-extra-3.13.0-100-generic linux-image-extra-3.13.0-101-generic linux-image-extra-3.13.0-92-generic linux-image-extra-3.13.0-93-generic linux-image-extra-3.13.0-96-generic
Am Ende dieses Vorgangs sind die *image-3.13*
s verschwunden, zusammen mit übereinstimmenden Dateien und Ordnern, die normalerweise in /boot
und in gefunden /lib/modules
werden. Die image-extra
s werden jedoch weiterhin als halbinstalliert gemeldet (obwohl sie scheinbar keine Dateien enthalten, wie durch dpkg -L
... )
Darüber hinaus werden Abhängigkeiten jetzt aufgehoben, da das Wiederholen der Bereinigung in dieser Phase dazu führt, dass Sie sich über fehlende Dateien / Ordner in /boot
und in beschweren /lib/modules
. Ich habe versucht, Dummy-Dateien an den erwarteten Speicherorten zu platzieren, wie hier vorgeschlagen , aber am Ende bin ich auf die ursprünglichen Fehler gestoßen. Ich glaube, das Folgende ist der entscheidende Auszug:
[...]
Removing linux-image-extra-3.13.0-101-generic (3.13.0-101.148) ...
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 3.13.0-101-generic /boot/vmlinuz-3.13.0-101-generic
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 3.13.0-101-generic /boot/vmlinuz-3.13.0-101-generic
update-initramfs: Generating /boot/initrd.img-3.13.0-101-generic
E: /usr/share/initramfs-tools/hooks/fixrtc failed with return 1.
update-initramfs: failed for /boot/initrd.img-3.13.0-101-generic with 1.
run-parts: /etc/kernel/postinst.d/initramfs-tools exited with return code 1
dpkg: error processing package linux-image-extra-3.13.0-101-generic (--purge):
subprocess installed post-removal script returned error exit status 1
[...]
Nachdem erfolglos versucht wurde, eine angeblich nukleare Option zu wählen :
sudo dpkg --remove --force-remove-reinstreq package_name
Mir gingen die Ideen aus.
dpgk
Ausführen der Skripte verursacht wird/etc/kernel/postrm.d
.Antworten:
Vorausgesetzt, dass:
linux-image-3.13.0-XXX-generic
wurden erfolgreich gelöschtlinux-image-extra-3.13.0-XXX-generic
werden immer noch als halb installiert gemeldetimage-extra
sDann besteht ein möglicher Ansatz darin, diese baumelnden Einträge
dpkg
wie hier vorgeschlagen zwangsweise aus der Datenbank zu entfernen .BITTE BEACHTEN SIE: Dies ist eine hackige, niedrige, potenziell gefährliche Operation.
$ dpkg -L linux-image-extra-3.13.0-XXX-generic
), und löschen Sie sie/var/lib/dpkg/status
, suchen und löschen Sie die Textblöcke, die die Pakete beschreiben, die dpkg vergessen solldpkg
alleapt
zugehörigen Programme wieder normal seinquelle
Dabei
ls /boot
sollten einigevmlinuz-X.XX.XX
Dateien angezeigt werden . Tun Sie diesapt-get purge linux-image-X.XX.XX-generic
für jeden, aber ENTFERNEN SIE NICHT den Kernel, den Sie ausführen . Sie können überprüfen, mit welchemuname -r
.quelle
/boot
Ordner zeigt überhaupt keine Einträge. Wie ich geschrieben habe, läuft Ubuntu in einem OpenVZ-Container und der Kernel (siehe Q) gehört zum Host, ich habe keine Kontrolle darüber. Auch das Versagenapt-get purge
dieser irrelevanten Pakete ist das Wesentliche des Problems, das beschrieben wird.Ich verwende Folgendes in einem Bash-Skript, um alles außer dem aktiven Kernel zu zerstören:
Es ist ziemlich nah an dem, was Sie aufgerufen haben, aber vielleicht
dpkg
ist es der notwendige Unterschied.Die vollständigen Skripte finden Sie bei Interesse hier:
https://github.com/mtompkins/linux-kernel-utilities
quelle
apt-get purge
für alle zutreffenden Pakete aufgerufen. Das habe ich schon mehrfach versucht, ohne Erfolg.dpkg
Aufruf damit umgehen könnte. Keine Sorge.