Comment supprimer les paquets cassés dans Ubuntu

38

Je ne peux pas enlever le colis cassé. Utilisez la commande suivante: sudo apt-get -f install mais j'obtiens la réponse suivante:

Preparing to unpack .../nodejs_0.10.28-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.28-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

J'ai essayé diverses commandes comme

 2015  sudo apt-get clean
 2020  sudo dpkg --configure -a
 2023  sudo apt-get autoremove
 2034  sudo apt-get upgrade && sudo apt-get -f install

Mais je n'ai eu aucun résultat. Je ne peux pas installer synaptic. Des idées comment puis-je enlever le paquet cassé?

Krasimir
la source
Voici quelques réponses suggérées --force-remove-reinstreqet --force-overwrite. Veuillez noter que vous ne devriez utiliser ces deux (surtout le premier) que si vous êtes un expert en Linux, car cela peut endommager complètement votre système.
g_p

Réponses:

55

Exécutez cette commande pour supprimer les paquets cassés dans Ubuntu.

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

après la suppression du paquet, mettez votre système à jour avec la commande

sudo apt-get update

redémarrer le système après une mise à jour réussie.

Premal
la source
5
Cette commande doit toujours être évitée car elle endommage plus le système qu'elle répare
Rancho,
2
@rancho dépend de quel paquet il s'agit.
Philip
nice one, la façon dont vous GUS package_name toujours écrire, mais je vois une liste de 900 lignes dans un format fou, par exemple: Broken libopencv-highgui2.4v5:amd64 Conflicts on libopencv-highgui2.4 [ amd64 ] < 2.4.8+dfsg1-2ubuntu1 > ( libs ). L'attente de LTS a vraiment fait ce tour fou pour moi.
Nyxee
@rancho "cela casse votre système plus qu'il répare" pouvez-vous élaborer? man dpkgn'aide pas beaucoup.
Stéphane Gourichon
C'était la seule chose qui a fonctionné pour moi. Je me suis cassé mon mysql lors de la mise à jour du paquet. Maintenant, je ne pouvais pas purger ou réinstaller. Donc, cela m'a sauvé la vie.
Ankit Singhaniya
11

Ouvrez votre terminal et utilisez la commande suivante

sudo dpkg --purge nodejs-legacy
sudo apt-get install -f

Cela devrait résoudre votre problème.

g_p
la source
11

J'ai trouvé ça:

sudo dpkg --remove --force-remove-reinstreq <packagename>

Fonctionne mieux. Si cela vous donne l'erreur de ne pas supprimer un paquet car celui-ci dépend d'un autre paquet, supprimez également cet autre paquet. Vous devrez répéter cette étape plusieurs fois, puis réinstaller vos packages supprimés.

C’est force-remove-reinstreql’option nucléaire de supprimer un paquet. Cela échoue uniquement s'il existe un autre package en fonction de celui que vous êtes sur le point de supprimer - Là encore, dans ce cas, supprimez également le package en question.

Bryan Wilcutt
la source
L’option nucléaire a fonctionné là où les purges, les nettoyages, les réinstallations, les suppressions automatiques, via les deux dpkget ont apt-getéchoué. Merci.
LAFK dit Réintégrer Monica
C’est la meilleure solution si vous voulez simplement tout détruire et tout recommencer. M'a sauvé beaucoup de temps! (J'ai également utilisé --purge après - supprimer)
andersevenrud
s'il vous plaît, pouvez-vous donner quelques conseils sur la façon de remplir cela package_namelorsque nous avons comme plus de 1000 lignes (certains en double) dans les fichiers de log apt ..
Nyxee
4

Cela a résolu mon problème:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
Krasimir
la source
Alors s'il vous plaît marque comme la bonne réponse alors.
Jarno
Fonctionne parfaitement.
Shubham Patel
3

Ouvrez votre terminal et collez-les ligne après ligne

sudo rm -rf  /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade

puis réessayez

rɑːdʒɑ
la source
2

La même erreur se répète Si nous le faisons apt-get cleanet à apt-get -f installmoins que nous ne supprimions les données indésirables du /var/lib/dpkg/statusfichier dans Ubuntu.

Supposons que nous ayons besoin de supprimer le paquet apache cassé. Dans un premier temps, nous devons ouvrir le fichier de statut et rechercher le paquet apache. Supprimez la description complète du paquet et enregistrez le fichier d'état. Ensuite, essayez d'utiliser apt-get -f installet apt-get clean.

utilisateur649305
la source
2

rien de ce qui précède n'a fonctionné pour moi. finalement, j'ai édité le fichier / var / lib / dpkg / status et enlevé les paquets à partir de là.

Difficile, je ne conseillerais pas de le faire, juste si quelque chose échouait ...

BonifatiusK
la source
Cela semble être la seule chose qui a fonctionné pour moi. Même la soi-disant 'option nucléaire' de --force-remove-reinstreq ne pouvait pas supprimer le paquet en cause. Merci Monsieur.
alex
1

Rien de ce qui précède n'a fonctionné pour moi

J'ai utilisé sudo aptitude.

Il a immédiatement trouvé l'erreur et proposé des options. Vous sélectionnez et cela corrige.

Aryeh Beitz
la source
l’a également corrigé pour moi sur debian - c’était la seule solution qui fonctionnait pour moi. Aucun des commentaires avant travaillé pour moi! Merci!
Hirbod
0

En voici un:

mettre à jour votre liste de paquets comme ceci

 sudo apt-get update

puis nettoyez tous les paquets partiels

 sudo apt-get autoclean

Maintenant, nettoyez le cache d'apt

 sudo apt-get clean

Maintenant, supprimez toutes les dépendances inutiles

 sudo apt-get autoremove

à partir de la commande ci-dessus, vous pouvez identifier tous les paquets cassés et les supprimer de force comme ceci

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

Enfin, mopup tous les autres paquets avec dépendances

 sudo apt-get -f install 

Dis moi comment ça se passe.

Olu Smith
la source
Je pense que cette commande est incorrecte: `sudo dpkg --remove -force --force-remove-reinstreq nom_package.
Juan Simón
Ji ... alors quelle est la bonne façon?
Olu Smith le
0
  1. interroger tous les paquets installés aujourd'hui ou hier awk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
  2. wine-qqintl: i386 a causé le problème, donc je supprime le paquet sudo dpkg -r wine-qqintl:i386

  3. terminé.

Ming Zhanghui
la source
1
ok, on peut avoir des paquets récemment installés comme ça, mais ça ne répond pas à la question qui demande comment enlever les paquets cassés
Zanna
0

J'ai eu un problème avec le paquet kodi cassé. J'ai ouvert le gestionnaire de paquets synaptic et utilisé le filtre "cassé" pour localiser le paquet et l'ai marqué pour une suppression complète. Cela a fonctionné comme un champion.

Joe
la source