7 votes

Forcer la suppression des paquets linux-image-extra* non désirés

Pour faire un longue histoire Bref, je suis coincé avec une poignée de paquets d'images indésirables et à moitié configurés dont j'essaie de me débarrasser :

$ 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 32 bits 14.04 vit dans un conteneur OpenVZ, qui s'occupe uniquement du noyau. Comme vous pouvez le voir, un noyau beaucoup plus ancien :

$ uname -r
2.6.32-042stab116.2

Ainsi, contrairement à la plupart des questions similaires portant sur la façon de supprimer vieux images du noyau après des mises à jour de routine, ce que j'essaie de faire ici est de PURGER COMPLÈTEMENT TOUS CES PAQUETS 3.13 qui ne devraient pas être là en premier lieu.


Voici un résumé de mes tentatives jusqu'à présent.

J'essaie de supprimer/supprimer les paquets de la manière habituelle ( apt-get , apt , aptitude cela n'a pas d'importance) ne semble pas fonctionner, en raison d'un apparent cercle vicieux.

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 sur le Ausgabe rien n'est réellement enlevé. D'un autre côté, aptitude réussit à 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

A la fin de l'année ce processus は、その *image-3.13* ont disparu, de même que les fichiers et dossiers correspondants que l'on trouve normalement dans /boot et en /lib/modules mais le image-extra sont toujours signalés comme étant à moitié installés (même s'ils ne semblent contenir aucun fichier, comme le vérifie l'indicateur dpkg -L ...)

De plus, les dépendances sont maintenant rompues, car la répétition de la purge à ce stade fait qu'apt se plaint de fichiers/dossiers manquants dans /boot et en /lib/modules . J'ai essayé de placer des fichiers fictifs aux emplacements prévus, comme suit suggéré ici mais au bout du compte, je me heurte aux erreurs initiales. L'extrait suivant est, je crois, l'extrait crucial :

[...]
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 soi-disant l'option nucléaire :

sudo dpkg --remove --force-remove-reinstreq package_name

Je suis à court d'idées.

3voto

sstasinek Points 1

Étant donné que :

  • le site linux-image-3.13.0-XXX-generic ont été purgés avec succès
  • le site linux-image-extra-3.13.0-XXX-generic sont toujours signalés comme étant à moitié installés
  • aucun paquet actuellement installé ne dépend de ceux-ci image-extra s
  • aucune de ces images ne devrait être là en premier lieu (puisque le noyau 2.6 est fourni par le conteneur OpenVZ hôte).
  • aucune des tentatives traditionnelles ne parvient à nettoyer le système

Une approche possible est de purger de force les entrées qui traînent dans la base de données de l'utilisateur. dpkg comme suggéré ici .

VEUILLEZ NOTER : il s'agit d'une opération pirate, de bas niveau et potentiellement dangereuse.

  • recherchez tous les fichiers appartenant au paquet que vous voulez supprimer (essayez $ dpkg -L linux-image-extra-3.13.0-XXX-generic ) et les supprimer
  • ouvrir le fichier /var/lib/dpkg/status Localisez et supprimez le(s) bloc(s) de texte décrivant le(s) paquet(s) que vous voulez que dpkg oublie.
  • faites très attention à préserver les lignes vides entre les descripteurs de paquets, les espaces en début de ligne, etc. On dit que la base de données apt ne pardonne pas les fautes de frappe.
  • après avoir sauvegardé le fichier d'état, dpkg ainsi que tous les apt -Les programmes connexes devraient revenir à la normale

1voto

Mark Points 1274

J'utilise ce qui suit dans un bash script pour nuke tout 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 dpkg est la différence nécessaire.

L'ensemble complet des scripts sont ici si cela vous intéresse :
https://github.com/mtompkins/linux-kernel-utilities

0voto

Faire ls /boot devrait montrer quelques vmlinuz-X.XX.XX fichiers. Faites apt-get purge linux-image-X.XX.XX-generic pour chacun d'eux, mais NE PAS ENLEVER le noyau que vous exécutez. Vous pouvez vérifier lequel avec uname -r .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X