Eliminar paquetes rotos


9

Recientemente, en un momento de frustración con la configuración de phpmyadmin, decidí comenzar desde cero.

Desafortunadamente, durante la fase de desinstalación, se me solicitó la contraseña de root para mysql que no tenía a mano en ese momento. Baste decir que me informó que habría componentes residuales ya que no podría limpiar adecuadamente sus conectores de base de datos.

Cuando llegué a casa, intenté eliminar el paquete a través del aptitude purgecual resultó no ser más potente que aptitude removeen que vio phpmyadmin, intenté eliminarlo y fallé ya que los directorios asociados con el paquete ya se eliminaron de mi intento anterior.

Traté de reinstalar phpmyadmin, pero aptitude simplemente afirmó que no había actualizaciones disponibles y no hizo nada, si hubiera una actualización, probablemente me encontraría con los mismos problemas de todos modos.

En este sentido, procedí a limpiar mysql eliminando la base de datos que usó y limpiándola de las tablas de usuario. Sin embargo, no tengo idea de qué más queda del paquete, o incluso cómo limpiar los ganchos en aptitude.

El resultado 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

Siguiendo los consejos de Gile, traté de reinstalar la dependencia 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#

Parece que phpmyadmin limpió limpiamente 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#

Intentó dpkg de archivos como lo sugirió 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#

Tengo un servidor web ejecutándose en php, pero estoy dispuesto a arriesgar el tiempo de inactividad para resolver esto.


Copia y pega los comandos exactos que probaste y toda la salida que obtienes. Probablemente podamos ayudarlo, pero no sin ver los mensajes de error exactos.
Gilles 'SO- deja de ser malvado'

Respuestas:


7

phpmyadmindepende de dbconfig-common, que contiene /usr/share/dbconfig-common/dpkg/prerm.mysql. Parece que has logrado desinstalar dbconfig-commonsin desinstalar phpmyadmin, lo que no debería haber sucedido (¿intentaste --forcealgo?).

Mi consejo es que primero lo intentes aptitude reinstall dbconfig-common. Si funciona, debe tener un sistema en un estado coherente desde el que pueda volver aptitude purge phpmyadmina intentarlo .

Otra cosa que puedes hacer es comentar la línea ofensiva /var/lib/dpkg/info/phpmyadmin.prerm. Es probable que esto le permita desinstalar phpmyadmin. Sospecho que hiciste lo que se supone que debe hacer esa línea cuando editaste esas tablas mysql manualmente, pero no sé phpmyadminni el administrador de la base de datos en general, así que solo estoy adivinando.

La diferencia entre removey purgees que removesolo elimina el programa y sus archivos de datos (las cosas que podría volver a descargar), mientras que purgeprimero hace lo que removehace y luego también elimina los archivos de configuración (las cosas que podría haber editado localmente). Si removefalla, también lo hará purge.


Recientemente probé su sugerencia para reinstalar dbconfig-common, pero fue en vano. He actualizado mis preguntas con los resultados de ese esfuerzo.
Ken

@ Ken: Inténtalo dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb. Si no tiene las debs en su caché, descárguelas de packages.debian.org . Si hay mensajes de error, publíquelos y yo (u otra persona) podría ayudarlo con ellos.
Gilles 'SO- deja de ser malvado'

Intento en vano. Parece como si se hubiera desatado un enjambre de langostas en mi servidor Debian limpio. La pregunta se ha actualizado para reflejar este último intento.
Ken

@Ken: también debe instalar las dependencias de php5-mcrypt. Aptitude haría el trabajo por ti; puedes intentarlo, pero creo que se negará a ceder hasta que llegues php5myadmina un buen estado. dpkges de nivel inferior y puede funcionar incluso en una base de datos de paquetes parcialmente descompuesta.
Gilles 'SO- deja de ser malvado'

Al intentar instalar php5-mcrypt, primero solicitó la eliminación de phpmyadminy dbconfig-common. No pude obtener ninguna otra solución, así que pensé que se caería de bruces cuando acepté. Por el contrario, simplemente el acto de que php5-mycrypt fue 'sugerido' para la instalación permitió la aptitud para limpiar adecuadamente los ganchos y quitar phpmyadminy dbconfig-common. Ahora los he reinstalado junto con phpmyadmin(aunque a través de un alquitrán para más control). Parece que la última versión no requiere mysql para la autoorganización. ¡Gracias Giles por eliminar las langostas de mi servidor!
Ken

3

A veces, el sistema de administración de paquetes está tan roto (a menudo en una cadena de dependencia circular) que la única combinación de comandos que he encontrado para eliminar paquetes problemáticos son:

  • cd /var/lib/dpkg/info ; rm <packagename.*>
  • dpkg --purge --force-remove-reinstreq <packagename>
  • O dpkg --remove --force-remove-reinstreq <packagename>
  • Luego apt-get install <packagename>de volver a instalar el paquete

A veces, el archivo de anulación de estado también puede necesitar repararse, y el procedimiento anterior puede arrojar errores al respecto. La forma de arreglar los archivos de anulación de estado depende de si se trata de un error que marca a un usuario o no.

Generalmente:

  • los archivos de anulación de estado están en: /var/lib/dpkg/statoverride
  • Puede actualizarlo ejecutando: dpkg-statoverride --remove <stateoverride-filename>
  • Incluso puede editarlos a mano si sabe lo que está haciendo.

2

(Voy a suponer que quisiste decir aptitude purgey apt-get remove, porque los comandos que citaste no existen)

Tratar dpkg --purge phpmyadmin. Es de menor nivel que las otras herramientas, por lo que podría ser más efectivo en este caso.


Proporcionó el mismo resultado pero sin la retroalimentación detallada requerida por aptitude. Gracias por atrapar mi picado de los nombres de los comandos.
Ken

Tengo lo que parece ser el mismo problema, pero desafortunadamente he compilado manualmente PHP, Apache y más, así que instalarlos agregando el módulo php5-mcrypt (que tiene todo lo que mencioné como una dependencia) resultaría en un proceso bastante desordenado y duplicación no deseada. ¿No hay otra manera?
Ken

0

Es posible que desee ejecutar 'apt-get -f install' para corregir estos:

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).

Estaba enfrentando el problema anterior, usando el problema de comando "sudo dpkg --purge postgresql-9.1" resuelto

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.