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

44

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 fondamentalement toutes les commandes apt-get car ils essayent tous de traiter ce paquet cassé et échouer. Tenter d'installer un nouveau paquet ne fait que le condamner au même sort. L'erreur que j'ai 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 de travail. La solution généralement recommandée consiste à exécuter les opérations suivantes:

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 purger via Synaptic ou la ligne de commande, qui échoue également.

Merci pour l’aide

    
posée Bijak 24.03.2014 - 03:42
la source

8 réponses

21

Donc, après plus de recherches sur Google et une lecture attentive des messages d’erreur, il semble que dpkg devait être réinstallé.

sudo apt-get install --reinstall dpkg

Ce qui a mis en évidence 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.

    
réponse donnée Bijak 25.03.2014 - 04:26
la source
48

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

Selon le message d'erreur suivant:

subprocess installed post-installation script returned error exit status 127

Vous pouvez modifier /var/lib/dpkg/info/[package_name].postinst et tout commenter (ou mieux encore, essayer 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 "la post-installation", il aurait pu par exemple mentionner "pré-enlèvement" ou "post-suppression" à la place (auquel cas l'extension du fichier à éditer aurait été .prerm ou .postrm ).

    
réponse donnée Skippy le Grand Gourou 05.06.2015 - 09:58
la source
33

Outre celles que vous avez déjà postées, il existe peu d’autres commandes utiles.

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

    sudo apt-get autoclean
    
  • Forcer l’installation / le retrait des paquets. cautionUtilisez avec prudence

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

    et

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

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

  • Installer

    sudo dpkg -i <pkgname>
    
  • Supprimer

    sudo dpkg -r <pkgname>
    
  • Purger

    sudo dpkg -P <pkgname>
    
réponse donnée Registered User 24.03.2014 - 05:10
la source
12

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

cd /var/lib/dpkg/info

alors j'ai tout enlevé avec .postinst :

sudo rm *.postinst

puis mettre à jour le référentiel

sudo apt-get update

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

sudo apt-get --force-yes install openjdk-7-jre-headless
    
réponse donnée Mike B 14.04.2016 - 04:39
la source
7

Vous pouvez supprimer le fichier de package dans director /var/lib/dpkg/info/ et update 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

    
réponse donnée Hamed 30.05.2017 - 10:29
la source
4

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

    
réponse donnée saiarcot895 24.03.2014 - 03:56
la source
2

Dans mon cas, apt-get install -f a travaillé. J'étais en train d'installer mysql-workbench-community

A déjà essayé apt autoclean

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

    
réponse donnée Vikas Avnish 19.11.2016 - 11:24
la source
0
sudo apt-get install -f --reinstall coreutils init-system-helpers

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

    
réponse donnée Uddhav Gautam 23.02.2018 - 18:09
la source

Lire d'autres questions sur les étiquettes