Suppression de paquets cassés

9

Récemment, au cours d'une frustration liée à la configuration de phpmyadmin, j'ai décidé de recommencer à zéro.

Malheureusement, pendant la phase de désinstallation, on m'a demandé le mot de passe root pour mysql que je n'avais pas sous la main à l'époque. Il suffit de dire qu'il m'a informé qu'il y aurait des composants résiduels car il ne pouvait pas nettoyer correctement ses connecteurs de base de données.

Quand je suis arrivé à la maison, j'ai essayé de supprimer le package aptitude purgequi ne s'avère pas plus puissant que aptitude removedans la mesure où il a vu phpmyadmin, a tenté de le supprimer et a échoué car les répertoires associés au package ont déjà été supprimés de ma tentative précédente.

J'ai essayé de réinstaller phpmyadmin, mais aptitude a simplement déclaré qu'il n'y avait pas de mise à jour disponible, et n'a rien fait, s'il y avait une mise à jour, je rencontrerais probablement les mêmes problèmes malgré tout.

À cet égard, j'ai procédé au nettoyage de mysql en supprimant la base de données utilisée et en la nettoyant des tables utilisateur. Je n'ai cependant aucune idée de ce qui reste du paquet, ni même comment nettoyer les crochets en aptitude.

Le résultat de dpkg --purge

ickronia:/home/ken# dpkg --purge phpmyadmin
(Reading database ... 27158 files and directories currently installed.)
Removing phpmyadmin ...
/var/lib/dpkg/info/phpmyadmin.prerm: line 5: /usr/share/dbconfig-common/dpkg/prerm.mysql: No such file or directory
dpkg: error processing phpmyadmin (--purge):
 subprocess pre-removal script returned error exit status 1
/var/lib/dpkg/info/phpmyadmin.postinst: line 35: /usr/share/dbconfig-common/dpkg/postinst.mysql: No such file or directory
dpkg: error while cleaning up:
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
phpmyadmin

En suivant les conseils de Gile, j'ai essayé de réinstaller la dépendance dbconfig-common

ickronia:/home/ken# aptitude reinstall dbconfig-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
dbconfig-common is not currently installed, so it will not be reinstalled.
dbconfig-common is not currently installed, so it will not be reinstalled.
The following packages are BROKEN:
  phpmyadmin
0 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 0B of archives. After unpacking 0B will be used.
The following packages have unmet dependencies:
  phpmyadmin: Depends: php5-mcrypt but it is not installable
              Depends: dbconfig-common but it is not installable
              Depends: libjs-mootools (>= 1.2.4.0~debian1-1) which is a virtual  package.
The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] y
The following packages will be REMOVED:
  phpmyadmin{a}
0 packages upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
Need to get 0B of archives. After unpacking 17.7MB will be freed.
Do you want to continue? [Y/n/?] y
Writing extended state information... Done
(Reading database ... 27158 files and directories currently installed.)
Removing phpmyadmin ...
/var/lib/dpkg/info/phpmyadmin.prerm: line 5: /usr/share/dbconfig-common/dpkg/prerm.mysql: No such file or directory
dpkg: error processing phpmyadmin (--remove):
 subprocess pre-removal script returned error exit status 1
/var/lib/dpkg/info/phpmyadmin.postinst: line 35: /usr/share/dbconfig-common/dpkg/postinst.mysql: No such file or directory
dpkg: error while cleaning up:
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
 phpmyadmin
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Reading task descriptions... Done

ickronia:/home/ken#

Il semble que phpmyadmin ait nettoyé proprement dbconfig-common

ickronia:/usr/share/dbconfig-common# ls -alF
total 12
drwxr-xr-x  3 root root 4096 2011-02-09 08:09 ./
drwxr-xr-x 98 root root 4096 2011-01-20 21:42 ../
drwxr-xr-x  3 root root 4096 2011-01-05 11:08 data/
ickronia:/usr/share/dbconfig-common#

Tentative de dpkg des archives comme suggéré par Giles

ickronia:/usr/share/dbconfig-common# dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb
Selecting previously deselected package dbconfig-common.
(Reading database ... 27161 files and directories currently installed.)
Unpacking dbconfig-common (from .../dbconfig-common_1.8.46_all.deb) ...
Selecting previously deselected package php5-mcrypt.
Unpacking php5-mcrypt (from .../php5-mcrypt_5.3.3-6_i386.deb) ...
Selecting previously deselected package libjs-mootools.
Unpacking libjs-mootools (from .../libjs-mootools_1.2.5~debian1-2_all.deb) ...
Setting up dbconfig-common (1.8.46) ...
dpkg: dependency problems prevent configuration of php5-mcrypt:
 php5-mcrypt depends on libltdl7 (>= 2.2.6b); however:
  Package libltdl7 is not installed.
 php5-mcrypt depends on libmcrypt4; however:
  Package libmcrypt4 is not installed.
dpkg: error processing php5-mcrypt (--install):
 dependency problems - leaving unconfigured
Setting up libjs-mootools (1.2.5~debian1-2) ...
Processing triggers for man-db ...
Processing triggers for libapache2-mod-php5 ...
Reloading web server config: apache2.
Errors were encountered while processing:
 php5-mcrypt
ickronia:/usr/share/dbconfig-common#

J'ai un serveur Web fonctionnant sur php, mais je suis prêt à risquer des temps d'arrêt pour résoudre ce problème.

Ken
la source
Copiez-collez les commandes exactes que vous avez essayées et toute la sortie que vous obtenez. Nous pouvons probablement vous aider, mais non sans voir les messages d'erreur exacts.
Gilles 'SO- arrête d'être méchant'

Réponses:

7

phpmyadmindépend de dbconfig-commonce qui contient /usr/share/dbconfig-common/dpkg/prerm.mysql. Il semble que vous ayez réussi à désinstaller dbconfig-commonsans désinstaller phpmyadmin, ce qui n'aurait pas dû se produire (avez-vous essayé --forcequelque chose?).

Mon conseil est d'essayer d'abord aptitude reinstall dbconfig-common. Si cela fonctionne, vous devriez avoir un système dans un état cohérent à partir duquel vous pouvez réessayer aptitude purge phpmyadmin.

Une autre chose que vous pouvez faire est de commenter la ligne incriminée /var/lib/dpkg/info/phpmyadmin.prerm. Cela est susceptible de vous permettre de désinstaller phpmyadmin. Je soupçonne que vous avez fait ce que cette ligne est censée faire lorsque vous avez modifié manuellement ces tables mysql, mais je ne sais pas phpmyadminou l'administrateur de la base de données en général, donc je ne fais que deviner.

La différence entre removeet purgeest qu'il removesupprime simplement le programme et ses fichiers de données (les trucs que vous pourriez télécharger à nouveau), tandis que d' purgeabord fait ce qui removefait, puis supprime également les fichiers de configuration (les trucs que vous pourriez avoir modifiés localement). En cas d' removeéchec, il en sera de même purge.

Gilles 'SO- arrête d'être méchant'
la source
J'ai récemment essayé votre suggestion de réinstallation de dbconfig-common, mais en vain. J'ai mis à jour mes questions avec les résultats de cet effort.
Ken
@Ken: Essayez dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb. Si vous n'avez pas les deb dans votre cache, téléchargez-les depuis packages.debian.org . S'il y a des messages d'erreur, postez-les et je (ou quelqu'un d'autre) pourrais vous aider avec eux.
Gilles 'SO- arrête d'être méchant'
Tenté en vain. Il semble qu'un essaim de sauterelles ait été déchaîné sur mon propre serveur Debian. La question a été mise à jour pour refléter cette dernière tentative.
Ken
@Ken: Vous devez également installer les dépendances de php5-mcrypt. L'aptitude ferait le travail pour vous; vous pouvez essayer, mais je pense qu'il refusera de bouger jusqu'à ce que vous vous portiez php5myadminen bon état. dpkgest de niveau inférieur et peut fonctionner même sur une base de données de packages partiellement rompue.
Gilles 'SO- arrête d'être méchant'
En essayant d'installer php5-mcrypt, il a d'abord demandé la suppression de phpmyadminet dbconfig-common. Je ne pouvais pas trouver d'autres solutions, alors je pensais que ça tomberait à plat sur le visage quand je suis d'accord. Au contraire, le simple fait que php5-mycrypt ait été «suggéré» pour l'installation permette de nettoyer correctement les crochets et de les retirer phpmyadminet dbconfig-common. Depuis, je les ai réinstallés avec phpmyadmin(bien qu'à travers un tar pour plus de contrôle). Il semble que la dernière version ne nécessite pas mysql pour l'auto-organisation. Merci Giles d'avoir supprimé les sauterelles de mon serveur!
Ken
3

Parfois, le système de gestion des packages est tellement cassé (souvent dans une chaîne de dépendance circulaire) que la seule combinaison de commandes que j'ai trouvée pour supprimer les packages problématiques est:

  • cd /var/lib/dpkg/info ; rm <packagename.*>
  • dpkg --purge --force-remove-reinstreq <packagename>
  • OU dpkg --remove --force-remove-reinstreq <packagename>
  • Ensuite, apt-get install <packagename>pour réinstaller le package

Parfois, le fichier de remplacement d'état peut également avoir besoin d'être corrigé, et la procédure ci-dessus peut générer des erreurs à ce sujet.

Généralement:

  • les fichiers de remplacement d'état sont dans: /var/lib/dpkg/statoverride
  • Vous pouvez le mettre à jour en exécutant: dpkg-statoverride --remove <stateoverride-filename>
  • Vous pouvez même les modifier à la main si vous savez ce que vous faites
Chux Uzoeto
la source
2

(Je vais supposer que vous vouliez dire aptitude purgeet apt-get remove, parce que les commandes que vous avez citées n'existent pas)

Essayez dpkg --purge phpmyadmin. C'est de niveau inférieur que les autres outils, donc pourrait être plus efficace dans ce cas.

tshepang
la source
Il a fourni le même résultat mais sans la rétroaction verbeuse requise par l'aptitude. Merci d'avoir rattrapé mon hachage des noms de commandes.
Ken
J'ai ce qui ressemble au même problème, mais malheureusement, j'ai compilé manuellement PHP, Apache, et plus encore, l'installation de ceux-ci en ajoutant le module php5-mcrypt (qui a tout ce que j'ai mentionné comme dépendance) entraînerait un peu de désordre et duplication indésirable. N'y a-t-il pas d'autre moyen?
ken
0

Vous voudrez peut-être exécuter 'apt-get -f install' pour corriger ces problèmes:

The following packages have unmet dependencies:
 postgresql-client-9.1 : Breaks: postgresql-9.1 (< 9.1.11-0ubuntu0.12.04) but 9.1.10-0ubuntu12.04 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

J'étais confronté au problème ci-dessus, en utilisant le problème de commande "sudo dpkg --purge postgresql-9.1" résolu

manjunath.k
la source