Pour faire un histoire longue bref, je suis coincé avec une poignée de paquets d’images non désirés, à moitié configurés, que je tente de supprimer:
$ 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
Ces images sont en fait inutiles, car mon système 14.04 32 bits réside dans un conteneur OpenVZ, qui est seul responsable du noyau. Comme vous pouvez le voir, un plus ancien:
$ uname -r
2.6.32-042stab116.2
Ainsi, contrairement à la plupart des questions similaires sur la façon de supprimer les anciennes images du noyau après les mises à niveau de routine, ce que j'essaie de faire ici est de PURGER COMPLÈTEMENT TOUS CES 3.13 FORFAITS , qui ne devraient pas être là en premier lieu.
Voici un résumé de mes tentatives jusqu'à présent.
Essayer de supprimer/purger les paquets de la manière habituelle (apt-get
, apt
name__, aptitude
name__, peu importe) ne semble pas fonctionner, en raison d'un cercle vicieux apparent.
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
Comme vous pouvez le voir dans le sortie , rien n'est réellement supprimé. Par contre, aptitude
parvient à aller un peu plus loin:
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
À la fin de ce processus , les *image-3.13*
s sont partis, ainsi que les fichiers et dossiers correspondants normalement trouvés dans /boot
et /lib/modules
, mais les image-extra
s sont toujours signalés comme étant à moitié installés (même s'ils semblent contenir aucun fichier, comme vérifié par dpkg -L
...)
De plus, les dépendances sont maintenant rompues, car répéter la purge à ce stade peut amener à se plaindre de fichiers/dossiers manquants dans /boot
et /lib/modules
. J'ai essayé de placer des fichiers factices aux emplacements prévus, comme suggéré ici , mais j'ai finalement rencontré les erreurs d'origine. Je crois que l'extrait crucial est le suivant:
[...]
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
[...]
Après avoir essayé sans succès un option supposée nucléaire :
Sudo dpkg --remove --force-remove-reinstreq package_name
J'ai manqué d'idées.
Étant donné que:
linux-image-3.13.0-XXX-generic
a été purgé avec succèslinux-image-extra-3.13.0-XXX-generic
sont toujours signalés comme étant à moitié installésimage-extra
sEnsuite, une approche possible consiste à purger de force les entrées en suspens de la base de données dpkg
, comme suggéré ici .
VEUILLEZ NOTER: il s’agit d’une opération peu scrupuleuse et potentiellement dangereuse.
$ dpkg -L linux-image-extra-3.13.0-XXX-generic
) et supprimez-les/var/lib/dpkg/status
, localisez et supprimez le (s) bloc (s) de texte décrivant le (s) paquet (s) que vous voulez que dpkg oubliedpkg
ainsi que tous les programmes associés à apt
devraient revenir à la normaleFaire ls /boot
devrait montrer quelques fichiers vmlinuz-X.XX.XX
. Faites apt-get purge linux-image-X.XX.XX-generic
pour chacun, mais NE RELEVEZ PAS le noyau que vous utilisez. Vous pouvez vérifier lequel avec uname -r
.
J'utilise ce qui suit dans un script bash pour tout détruire sauf le noyau actif:
dpkg -l linux-* | awk '/^ii/{ print $2}' | grep -v -e "$(uname -r | cut -f1,2 -d"-")" | grep -e "[0-9]" | grep -E "(image|headers)" | xargs Sudo apt-get -y purge
C'est assez proche de ce que vous avez invoqué, mais peut-être que dpkg
est la différence nécessaire.
L'ensemble des scripts sont ici si vous êtes intéressé:
https://github.com/mtompkins/linux-kernel-utilities