2 votes

Comment puis-je demander à APT d' "ignorer" un paquet ?

Je lance un VPS en utilisant Debian unstable avec cette version du noyau :

2.6.32-274.7.1.el5.028stab095.1

Je viens de mettre à jour mes paquets et pour une raison étrange, APT veut que j'installe linux-image-3.2.0-3-amd64, ce qui est étrange, étant donné que je ne peux pas modifier le noyau car c'est un VPS. J'ai essayé de l'installer quand même, mais comme je le soupçonnais, cela n'a pas fonctionné :

root@youmu:~# apt-get upgrade
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances       
Lecture des informations d'état... Fait
0 mis à jour, 0 nouvellement installés, 0 à enlever et 0 non mis à jour.
1 partiellement installé ou enlevé.
Après cette opération, 0 o d'espace disque supplémentaires seront utilisés.
Voulez-vous continuer [O/n] ? O
Configuration de linux-image-3.2.0-3-amd64 (3.2.23-1) ...
Exécution de depmod.
vmlinuz(/boot/vmlinuz-3.2.0-3-amd64
) pointe vers /boot/vmlinuz-3.2.0-3-amd64
 (/boot/vmlinuz-3.2.0-3-amd64) -- ne fait rien à la ligne 268 de /var/lib/dpkg/info/linux-image-3.2.0-3-amd64.postinst.
initrd.img(/boot/initrd.img-3.2.0-3-amd64
) pointe vers /boot/initrd.img-3.2.0-3-amd64
 (/boot/initrd.img-3.2.0-3-amd64) -- ne fait rien à la ligne 268 de /var/lib/dpkg/info/linux-image-3.2.0-3-amd64.postinst.
Examen de /etc/kernel/postinst.d.
run-parts: exécution de /etc/kernel/postinst.d/initramfs-tools 3.2.0-3-amd64 /boot/vmlinuz-3.2.0-3-amd64
update-initramfs: Génération de /boot/initrd.img-3.2.0-3-amd64
run-parts: exécution de /etc/kernel/postinst.d/zz-update-grub 3.2.0-3-amd64 /boot/vmlinuz-3.2.0-3-amd64
Recherche du répertoire d'installation de GRUB ... trouvé : /boot/grub
Recherche du fichier par défaut ... Génération du fichier /boot/grub/default et réglage de l'entrée de démarrage par défaut sur 0
entrée non spécifiée.
run-parts: /etc/kernel/postinst.d/zz-update-grub a quitté avec le code de retour 1
Échec du traitement de /etc/kernel/postinst.d à la ligne 696 de /var/lib/dpkg/info/linux-image-3.2.0-3-amd64.postinst.
dpkg: erreur de traitement de linux-image-3.2.0-3-amd64 (--configure) :
 le script post-installation installé a retourné une erreur de sortie 1
Des erreurs ont été rencontrées pendant l'exécution :
 linux-image-3.2.0-3-amd64
E: Sous-processus /usr/bin/dpkg a retourné un code d'erreur (1)
root@youmu:~# 

Alors j'ai essayé de le supprimer, mais ça a encore échoué.

Je me demande s'il y a un moyen de faire en sorte qu'APT ignore un paquet comme s'il n'existait pas, afin qu'il ne me dérange pas à chaque fois que j'installe un paquet. J'ai essayé de mettre le paquet en attente mais il veut quand même le reconfigurer.

Des suggestions?

Fin du fichier postinst :

## Exécuter le script hook utilisateur ici, s'il y en a
if ($postinst_hook) {
  &run_hook("postinst", $postinst_hook);
}

if (-d "/etc/kernel/postinst.d") {
  print STDERR "Examen de /etc/kernel/postinst.d.\n";
  system ("run-parts --verbose --exit-on-error --arg=$version " .
          "--arg=$realimageloc$kimage-$version " .
          "/etc/kernel/postinst.d") &&
            die "Échec du traitement de /etc/kernel/postinst.d";
}

if (-d "/etc/kernel/postinst.d/$version") {
  print STDERR "Examen de /etc/kernel/postinst.d/$version.\n";
  system ("run-parts --verbose --exit-on-error --arg=$version " .
          "--arg=$realimageloc$kimage-$version " .
          "/etc/kernel/postinst.d/$version") &&
            die "Échec du traitement de /etc/kernel/postinst.d/$version";
}

exit 0;

__END__

0 votes

J'ai essayé de mettre le package en attente mais il veut toujours le re-configurer. --> montrez-nous la sortie ?

0 votes

C'est exactement la même sortie que dans la question -- la façon dont je l'ai mis en attente était avec echo linux-image-3.2.0-3-amd64 hold|dpkg --set-selections

0 votes

Affichez quelques lignes autour de la ligne 696 dans /var/lib/dpkg/info/linux-image-3.2.0-3-amd64.postinst ?

1voto

quanta Points 49664

En tant que mesure temporaire, commentez la commande exec update-grub dans le fichier /etc/kernel/postinst.d/zz-update-grub en exécutant :

$ sudo sed -i.bak '/exec update-grub/s/^/#/' /etc/kernel/postinst.d/zz-update-grub

puis exécutez le script de configuration :

$ sudo dpkg --configure -a

Si cela fonctionne, vous pouvez restaurer le fichier zz-update-grub avec son contenu d'origine.

0voto

Dagelf Points 458

La réponse acceptée pour ignorer la mise à jour des scripts de démarrage pour apt ne fonctionne plus car update-grub est maintenant enveloppé dans un bloc if, ce qui échoue lorsqu'il n'y a rien entre. Voici une méthode plus efficace :

 $ sudo mv /usr/sbin/update-grub /usr/sbin/update-grub.disabled
 $ sudo mv /usr/sbin/update-initramfs /usr/sbin/update-initramfs.disabled
 $ sudo mv /usr/sbin/cryptsetup /usr/sbin/cryptsetup.disabled

Ceci est une solution de contournement efficace si vous êtes sur NFS. Mieux vaudrait consulter la documentation officielle de Debian, ou améliorer les scripts apt pour qu'ils ne échouent pas pour les clients NFS.

Réponse associée : Comment puis-je demander à apt-get d'ignorer certaines dépendances ?

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