web-dev-qa-db-fra.com

Comment supprimer / installer un paquet qui n'est pas complètement installé?

Je suis allé installer bsnes l'autre jour et pour une raison quelconque, l'installation a échoué. À présent, je ne peux pas mettre à jour, installer de nouveaux paquets, ni faire de commandes apt-get car ils essaient tous de traiter ce paquet cassé et échouent. Tenter d'installer un nouveau paquet le condamne également 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 efficace. Le correctif généralement suggéré consiste à exécuter les éléments suivants:

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

Cela ne fonctionne cependant pas. Les commandes apt-get échouent toutes avec la même erreur que ci-dessus et la commande dpkg n'aide pas. L'autre chose qu'ils suggèrent souvent de le purger via Synaptic ou la ligne de commande, qui échoue également.

Merci pour l'aide

56
Bijak

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

Sudo apt-get install --reinstall dpkg

Ce qui a fait savoir que c'était le problème (si quelqu'un cherche et voit cela), c'est que update-alternatives: not found était dans le message d'erreur. Dès que dpkg a été réinstallé, les autres packages ont été installés normalement automatiquement.

24
Bijak

Pour les utilisateurs avancés, utilisez-le à vos risques et périls.

Selon le message d'erreur suivant:

subprocess installed post-installation script returned error exit status 127

Vous voudrez peut-être éditer /var/lib/dpkg/info/[package_name].postinst et tout commenter (ou mieux encore, essayez de le comprendre et d'identifier le problème), puis essayez à nouveau apt-get.

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

54

En dehors de ceux que vous avez déjà publiés, il y a peu d'autres commandes qui peuvent être utiles.

  • Autoclean efface le référentiel local des fichiers de package récupérés.

    Sudo apt-get autoclean
    
  • Forcer l'installation/la suppression de paquets. tilisez avec prudence

    Sudo apt-get --force-yes install <pkgname>
    

    et

    Sudo apt-get --force-yes remove <pkgname>
    

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

  • Installer

    Sudo dpkg -i <pkgname>
    
  • Retirer

    Sudo dpkg -r <pkgname>
    
  • Purge

    Sudo dpkg -P <pkgname>
    
39
Registered User

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

cd /var/lib/dpkg/info

puis j'ai tout supprimé avec .postinst:

Sudo rm *.postinst

puis mettre à jour le référentiel

Sudo apt-get update

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

Sudo apt-get --force-yes install openjdk-7-jre-headless
13
Mike B

Vous pouvez supprimer le fichier de package dans ce chemin /var/lib/dpkg/info/ 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 paquet Sudo apt-get install [package_name]

Doc

13
Hamed

Si tout échoue, vous pouvez supprimer manuellement le package via dpkgname__. L'exécution de Sudo dpkg -P bsnes devrait purger bsnesname__.

5
saiarcot895

Dans mon cas, apt-get install -f a fonctionné. J'installais mysql-workbench-community

Déjà essayé apt autoclean

J'ai vu cette erreur dpkg en raison de certaines dépendances manquantes qui pourraient être corrigées en installant en mode forcé (installation de dépendances)

2
Vikas Avnish
Sudo apt-get install -f --reinstall coreutils init-system-helpers

Après avoir exécuté ci-dessus, vous pouvez installer/mettre à jour/supprimer/purger comme d'habitude pour tous les paquets.

0
Uddhav Gautam