Comment réparer les mises à jour synaptiques cassées: "Le package est dans un très mauvais état incohérent"


15

J'ai un Dell Mini9 exécutant Ubuntu 8.10. Un jour, j'ai eu la brillante idée de voir si je pouvais installer une pile LAMP. J'ai eu du mal à installer MySQL 5.0. Je ne me souviens pas de l'erreur, mais depuis que toutes les tentatives d'exécution de update-manager, synaptic ou apt-get échouent avec une erreur sur mysql-server-5.0: "Le package est dans un très mauvais état incohérent".

J'ai essayé apt-get remove mysql-server-5.0et aussi installmais sans chance. Les deux échouent avec la même erreur ci-dessous. Comment puis-je réparer cela?

$ sudo apt-get supprimer mysql-server-5.0
Lecture des listes de packages ... Terminé
Construction d'un arbre de dépendance       
Lecture des informations d'état ... Terminé
Les packages suivants ont été installés automatiquement et ne sont plus nécessaires:
  dhcdbd libisc32
Utilisez «apt-get autoremove» pour les supprimer.
Les packages suivants seront SUPPRIMÉS:
  mysql-server-5.0
0 mis à niveau, 0 nouvellement installé, 1 à supprimer et 164 non mis à niveau.
1 pas complètement installé ou retiré.
Après cette opération, 85,4 Mo d'espace disque seront libérés.
Voulez-vous continuer [O / n]? 
dpkg: erreur de traitement mysql-server-5.0 (--remove):
 Le paquet est dans un très mauvais état incohérent - vous devriez
 réinstallez-le avant de tenter une suppression.
Des erreurs ont été rencontrées lors du traitement:
 mysql-server-5.0
E: Le sous-processus / usr / bin / dpkg a renvoyé un code d'erreur (1)

Pensez à utiliser <pre> pour la sortie d'écran lorsque la coloration syntaxique n'est pas nécessaire.
John Oxley

Réponses:


19

Aucune des autres réponses n'a fonctionné pour moi sur Maverick.

Dans mon cas, j'ai trouvé que cela fonctionnait:

sudo rm /var/lib/dpkg/info/flashplugin-nonfree.prerm

sudo dpkg --remove --force-remove-reinstreq flashplugin-nonfree

(en remplaçant "flashplugin-nonfree" par le nom du paquet cassé et en remplaçant "prerm" par le type de script qui a échoué - dans mon cas c'était "postrm", le script post-suppression.)

Et ils disent qu'Ubuntu est facile à utiliser !! grogner grogner


--purge vaut mieux laisser tomber les deps cassés
stepancheg

1
Je cherche depuis des heures une solution à un problème similaire, et c'est le seul qui a fonctionné. Merci.
LukeGT

6

J'ai eu exactement le même problème avec une installation mysql. Vous devez purger le packge. La simple suppression d'un package ne supprime pas les fichiers de configuration qui l'accompagnent.

De plus, je vais me référer à mysql-server-5.0 , mais sachez qu'il existe un package wrapper mysql-server qui pointe toujours vers la dernière version. c'est-à-dire que si vous demandez d'installer mysql-server , apt-get devrait vous dire que cela dépend de mysql-server-5.0 et installer les deux. Si vous avez le package mysql-server sur le système, vous devez vous assurer qu'il a également disparu avant de réinstaller.

  • Assurez-vous que le serveur mysql (mysqld) ne fonctionne pas. Si c'est le cas, faites-le descendre:

    sudo /etc/init.d/mysqld stop

  • Vérifiez si des packages dépendent de mysql-server-5.0:

    sudo apt-cache rdepends mysql-server-5.0

    Si tel est le cas, vous devrez utiliser l' option --force pour désinstaller.

  • Purgez le package (incluez l' option --force , selon # 2)

    sudo apt-get --purge remove --force mysql-server-5.0

  • Assurez-vous que les fichiers d'installation sont également effacés en exécutant

    sudo apt-get autoclean
    sudo apt-get autoremove

  • Réinstaller le package serveur

    sudo apt-get install mysql-server-5.0

J'espère que cela devrait résoudre votre problème. Cependant, le package peut toujours être cassé, si vous avez apporté des modifications aux fichiers provenant du package mysql-common .

mysql-common est le package de base utilisé par les composants client et serveur. Si les choses ne fonctionnent toujours pas, essayez de réinstaller ce package. Il y aura certainement des packages qui en dépendent; vérifiez en utilisant # 2 ci-dessus. Purgez le serveur mysql avant de réinstaller mysql-common . N'oubliez pas non plus de réinstaller mysql-common , sinon votre système sera très cassé.


1

Vous voudrez peut-être aptitudeessayer, qui a une meilleure gestion des dépendances:

sudo aptitude remove mysql-server-5.0

L'erreur est ici dpkg, donc je ne pense pas que cela aptitudeirait nécessairement mieux. Ne vous méprenez pas, je suis tout à fait aptitudefini apt-get, mais à la fin de la journée, ils remettent tous les deux le vrai nitty-gravel dpkg(que vous serez heureux d'entendre a été initialement implémenté en Perl).
Télémaque

;-) J'ai juste pensé que ça valait le coup d'essayer.
innaM

0

Essayer

sudo dpkg -i reconfigure mysql-server-5.0
sudo apt-get remove --force mysql-server-5.0

Si c'est un autre paquet qui est cassé, essayez aussi apt-get remove --forcece paquet.


0

L' dpkgerreur que vous avez là suggère que le problème se produit lorsque vous dpkgessayez de supprimer réellement le package. (À la fin de la journée, apt-getet Synapticainsi de suite, passez le travail réel à dpkg.)

Avez-vous essayé de faire exactement ce que dit le message et de réinstaller d' abord?

apt-get install --reinstall mysql-server-5.0

Aussi stupide que cela puisse paraître, s'il dpkgs'étouffe pendant le processus de suppression (car certains fichiers qu'il est censé supprimer ont disparu entre-temps), la réinstallation puis la suppression peuvent parfois aider. Assurez-vous que cela mysqlne fonctionne pas avant d'essayer de l'installer ou de le supprimer, comme le suggère Nagul .


0

dpkg -r --force-remove-reinstreq <package> supprime un package sans vérifier s'il nécessite une réinstallation.

Après cela, vous devriez pouvoir réinstaller le package avec votre gestionnaire de packages préféré.


0

J'ai eu ce problème avec mailman. /Etc/init.d/mailman supprimé avec

rm /etc/init.d/mailman

corrigé :)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.