101 votes

Comment supprimer / installer un package qui n'est pas entièrement installé ?

Je suis allé installer bsnes l'autre jour et, pour une raison quelconque, l'installation a échoué. Maintenant, je ne peux pas mettre à jour, installer de nouveaux paquets, ou faire essentiellement n'importe quelle commande apt-get car elles essaient toutes de traiter ce paquet cassé et échouent. Essayer d'installer un nouveau paquet le condamne au même sort.

L'erreur que je reçois est :

Setting up google-chrome-stable (33.0.1750.152-1) ...
/var/lib/dpkg/info/google-chrome-stable.postinst: 124: /var/lib/dpkg/info/google-chrome-stable.postinst: update-alternatives: not found
dpkg: error processing google-chrome-stable (--configure):
 subprocess installed post-installation script returned error exit status 127
Setting up bsnes (0.088-7) ...
/var/lib/dpkg/info/bsnes.postinst: 5: /var/lib/dpkg/info/bsnes.postinst: update-alternatives: not found
dpkg: error processing bsnes (--configure):
 subprocess installed post-installation script returned error exit status 127
Errors were encountered while processing:
 google-chrome-stable
 bsnes
E: Sub-process /usr/bin/dpkg returned an error code (1)

J'ai cherché sur Google et ici sur Ask Ubuntu mais je n'ai pas trouvé de solution fonctionnelle.

La solution couramment suggérée est d'exécuter ce qui suit :

sudo apt-get clean && sudo apt-get autoremove
sudo apt-get -f install
sudo dpkg --configure -a

Cependant, cela ne fonctionne pas. Les commandes apt-get échouent toutes avec la même erreur que ci-dessus et la commande dpkg n'aide pas. Ils suggèrent souvent aussi de le purger via Synaptic ou la ligne de commande, ce qui échoue également.

94voto

Pour les utilisateurs avancés, utilisez à vos propres risques.

En fonction du message d'erreur suivant :

le script d'installation post-installation du sous-processus a renvoyé une erreur de statut de sortie 127

Vous voudrez peut-être modifier /var/lib/dpkg/info/[nom_du_paquet].postinst et commenter tout (ou encore mieux, essayer de le comprendre et d'identifier le problème), puis réessayer avec apt-get.

Remarquez que bien que dans cette question particulière le message concerne la "post-installation", il aurait pu mentionner par exemple la "pré-désinstallation" ou la "post-désinstallation" à la place (dans ce cas, l'extension du fichier à modifier aurait été .prerm ou .postrm).

58voto

Registered User Points 9233

En dehors de ceux que vous avez déjà postés, il existe quelques autres commandes qui peuvent être utiles.

  • Autoclean nettoie le dépôt local des fichiers de package récupérés.

    sudo apt-get autoclean
  • Forcer l'installation/suppression de packages. Utilisez avec prudence

    sudo apt-get --force-yes install 

    et

    sudo apt-get --force-yes remove 

Comme toujours, vous pouvez utiliser dpkg pour installer, supprimer et purger des packages.

  • Installer

    sudo dpkg -i 
  • Supprimer

    sudo dpkg -r 
  • Purger

    sudo dpkg -P

35voto

denisinla Points 181

Vous pouvez supprimer le fichier du package dans ce /var/lib/dpkg/info/ chemin et mettre à jour la source.

sudo rm /var/lib/dpkg/info/[package_name].*
sudo dpkg --configure -a
sudo apt-get update

Ensuite, ré-installez votre package sudo apt-get install [package_name]

Doc

30voto

Bijak Points 1411

Donc, après avoir fait plus de recherches sur Google et avoir vraiment lu attentivement les messages d'erreur à nouveau, il semble que dpkg devait être réinstallé.

sudo apt-get install --reinstall dpkg

Ce qui a révélé que c'était le problème (si quelqu'un fait une recherche et voit ceci) est que update-alternatives: not found était dans le message d'erreur. Dès que dpkg a été réinstallé, les autres paquets ont continué à s'installer normalement automatiquement.

16voto

Mike B Points 177

Si tout le reste échoue. Ce que j'ai fait, c'est d'abord changer le répertoire en:

cd /var/lib/dpkg/info

puis j'ai supprimé tout ce qui contient .postinst:

sudo rm *.postinst

puis mettre à jour le dépôt

sudo apt-get update

ensuite, tout est revenu à la normale quand j'ai fait:

sudo apt-get --force-yes install openjdk-7-jre-headless

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