¿Cómo lidiar con un paquete que no se configura correctamente debido a que su script de inicio se comporta mal?

2

Tengo una instalación de mysql 5.5 que funciona completamente por lo que puedo decir, pero cada vez que corro aptitude install someProgram trata de finalizar la instalación, me pide que establezca una nueva contraseña de mysql y sigue fallando.

No quiero desinstalarlo porque funciona, y ya intenté volver a instalarlo, pero este mismo problema ocurre siempre.

¿Es posible marcar el paquete como instalado para que aptitude deje de gastar un minuto intentando configurar mysql (y falla) cada vez que instalo algo?

EDITAR : Aquí está la salida de la aptitud, Pero una versión más nueva está más abajo.

root@server:~# aptitude install fping
The following NEW packages will be installed:
  fping
The following partially installed packages will be configured:
  mysql-server mysql-server-5.5
0 packages upgraded, 1 newly installed, 0 to remove and 29 not upgraded.
Need to get 35.0 kB of archives. After unpacking 114 kB will be used.
Get: 1 http://http.debian.net/debian/ wheezy/main fping armhf 3.2-1 [35.0 kB]
Fetched 35.0 kB in 0s (86.4 kB/s)
Selecting previously unselected package fping.
(Reading database ... 29917 files and directories currently installed.)
Unpacking fping (from .../archives/fping_3.2-1_armhf.deb) ...
Processing triggers for man-db ...
Setting up mysql-server-5.5 (5.5.31+dfsg-0+wheezy1) ...
[ ok ] Stopping MySQL database server: mysqld.
[ ok ] Starting MySQL database server: mysqld . ..
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing mysql-server-5.5 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.5; however:
  Package mysql-server-5.5 is not configured yet.

dpkg: error processing mysql-server (--configure):
 dependency problems - leaving unconfigured
Setting up fping (3.2-1) ...
Errors were encountered while processing:
 mysql-server-5.5
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Setting up mysql-server-5.5 (5.5.31+dfsg-0+wheezy1) ...
[ ok ] Stopping MySQL database server: mysqld.
130711 11:36:34 [ERROR] An old style --language value with language specific part detected: /usr/share/mysql/english/
130711 11:36:34 [ERROR] Use --lc-messages-dir without language specific part instead.
130711 11:36:34 [Note] Plugin 'FEDERATED' is disabled.
130711 11:36:34 InnoDB: The InnoDB memory heap is disabled
130711 11:36:34 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130711 11:36:34 InnoDB: Compressed tables use zlib 1.2.7
130711 11:36:34 InnoDB: Using Linux native AIO
130711 11:36:34 InnoDB: Initializing buffer pool, size = 128.0M
130711 11:36:35 InnoDB: Completed initialization of buffer pool
130711 11:36:35 InnoDB: highest supported file format is Barracuda.
130711 11:36:36  InnoDB: Waiting for the background threads to start
130711 11:36:37 InnoDB: 5.5.31 started; log sequence number 1595695
130711 11:36:37  InnoDB: Starting shutdown...
130711 11:36:38  InnoDB: Shutdown completed; log sequence number 1595695
[ ok ] Starting MySQL database server: mysqld . ..
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing mysql-server-5.5 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.5; however:
  Package mysql-server-5.5 is not configured yet.

dpkg: error processing mysql-server (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-server-5.5
 mysql-server

EDIT2 : Aquí está la nueva salida de aptitude después de los cambios de kostix:

root@server:~# grep -rFw language /etc/mysql/
/etc/mysql/my.cnf:language        = /usr/share/mysql/english
root@server:~# nano /etc/mysql/my.cnf
root@server:~# aptitude install
The following partially installed packages will be configured:
  mysql-server mysql-server-5.5
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 30 not upgraded.
Need to get 0 B of archives. After unpacking 0 B will be used.
Setting up mysql-server-5.5 (5.5.31+dfsg-0+wheezy1) ...
[ ok ] Stopping MySQL database server: mysqld.
[ ok ] Starting MySQL database server: mysqld ..
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing mysql-server-5.5 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.5; however:
  Package mysql-server-5.5 is not configured yet.

dpkg: error processing mysql-server (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-server-5.5
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Setting up mysql-server-5.5 (5.5.31+dfsg-0+wheezy1) ...
[ ok ] Stopping MySQL database server: mysqld.
130711 13:10:35 [Note] Plugin 'FEDERATED' is disabled.
130711 13:10:35 InnoDB: The InnoDB memory heap is disabled
130711 13:10:35 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130711 13:10:35 InnoDB: Compressed tables use zlib 1.2.7
130711 13:10:35 InnoDB: Using Linux native AIO
130711 13:10:35 InnoDB: Initializing buffer pool, size = 128.0M
130711 13:10:35 InnoDB: Completed initialization of buffer pool
130711 13:10:35 InnoDB: highest supported file format is Barracuda.
130711 13:10:35  InnoDB: Waiting for the background threads to start
130711 13:10:36 InnoDB: 5.5.31 started; log sequence number 1595695
130711 13:10:36  InnoDB: Starting shutdown...
130711 13:10:37  InnoDB: Shutdown completed; log sequence number 1595695
[ ok ] Starting MySQL database server: mysqld ..
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing mysql-server-5.5 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.5; however:
  Package mysql-server-5.5 is not configured yet.

dpkg: error processing mysql-server (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-server-5.5
 mysql-server

EDIT3: con las banderas set -u -e -x:

root@server:~# aptitude install screen
The following NEW packages will be installed:
  screen 
The following partially installed packages will be configured:
  mysql-server mysql-server-5.5 
0 packages upgraded, 1 newly installed, 0 to remove and 30 not upgraded.
Need to get 633 kB of archives. After unpacking 824 kB will be used.
Get: 1 http://http.debian.net/debian/ wheezy/main screen armhf 4.1.0~20120320gitdb59704-7 [633 kB]
Fetched 633 kB in 1s (443 kB/s) 
Selecting previously unselected package screen.
(Reading database ... 29927 files and directories currently installed.)
Unpacking screen (from .../screen_4.1.0~20120320gitdb59704-7_armhf.deb) ...
Processing triggers for install-info ...
Processing triggers for man-db ...
Setting up mysql-server-5.5 (5.5.31+dfsg-0+wheezy1) ...
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld ..
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing mysql-server-5.5 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.5; however:
  Package mysql-server-5.5 is not configured yet.

dpkg: error processing mysql-server (--configure):
 dependency problems - leaving unconfigured
Setting up screen (4.1.0~20120320gitdb59704-7) ...
Errors were encountered while processing:
 mysql-server-5.5
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Setting up mysql-server-5.5 (5.5.31+dfsg-0+wheezy1) ...
Stopping MySQL database server: mysqld.
130711 16:39:19 [Note] Plugin 'FEDERATED' is disabled.
130711 16:39:19 InnoDB: The InnoDB memory heap is disabled
130711 16:39:19 InnoDB: Mutexes and rw_locks use GCC atomic builtins
130711 16:39:19 InnoDB: Compressed tables use zlib 1.2.7
130711 16:39:19 InnoDB: Using Linux native AIO
130711 16:39:19 InnoDB: Initializing buffer pool, size = 128.0M
130711 16:39:19 InnoDB: Completed initialization of buffer pool
130711 16:39:19 InnoDB: highest supported file format is Barracuda.
130711 16:39:19  InnoDB: Waiting for the background threads to start
130711 16:39:20 InnoDB: 5.5.31 started; log sequence number 1595695
130711 16:39:21  InnoDB: Starting shutdown...
130711 16:39:22  InnoDB: Shutdown completed; log sequence number 1595695
Starting MySQL database server: mysqld ..
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing mysql-server-5.5 (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.5; however:
  Package mysql-server-5.5 is not configured yet.

dpkg: error processing mysql-server (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mysql-server-5.5
 mysql-server
Filip Haglund
fuente
Un truco rápido para ponerte en marcha: abrir /etc/init.d/mysqld rc-file en un editor de texto, localice el case cambiar el envío en el argumento de script, y poner exit 0 antes del primer comando en la rama que trata con el start argumento; entonces corre dpkg --configure --pending. Después de que (supuestamente) tenga éxito, revierta su edición.
kostix
Pero realmente deberías Reportar un error ¡sobre esto! También puede obtener más ayuda con esto por parte de los mantenedores de paquetes.
kostix
Oh, por favor ignora mi truco, extrañé esos [ERROR] pedacitos
kostix
@kostix agrega tu primer comentario a tu respuesta y lo marcaré. Funcionó: D
Filip Haglund
Hizo que. También describió cómo se podría usar una técnica similar para lidiar con los paquetes no instalables algunas veces.
kostix

Respuestas:

3

El primer problema (errores de MySQL)

Respecto a esos [ERROR] pedacitos ...

Por favor, hazlo

# grep -rFw language /etc/mysql/

como supuse que sus archivos de configuración aún se refieren a una opción de configuración en desuso.

Por ejemplo, en uno de mis sistemas Wheezy que se actualizaron desde Squeeze, tengo:

# grep -rFw language /etc/mysql
/etc/mysql/my.cnf.dpkg-old:language     = /usr/share/mysql/english
# grep -rFw lc-messages-dir /etc/mysql
/etc/mysql/my.cnf:lc-messages-dir       = /usr/share/mysql

Tenga en cuenta que la antigua directiva está en el .dpkg-old archivo (que no se usa), y lc-messages-dir está en el archivo "activo".

Comentando que language La opción en un archivo de configuración activo debería solucionar esto por usted. Tenga en cuenta que MySQL también carga todos los archivos que coinciden con el *.cnf patrón de la /etc/mysql/conf.d directorio.

El segundo problema (falla al iniciar el demonio MySQL)

Un truco rápido para superar este problema: abrir /etc/init.d/mysql rc-file en un editor de texto, ubique el interruptor de caso que se está enviando en el argumento del script, y coloque exit 0 antes del primer comando en la rama que trata con el argumento de inicio; entonces corre dpkg --configure --pending. Después de que (supuestamente) tenga éxito, revierta su edición.

La idea detrás de este truco es dejar que el objetivo de inicio de rc-script se complete con éxito. El mismo enfoque a veces también puede ser útil para tratar de desinstalar un paquete cuando su secuencia de comandos posterior a la instalación postinst script en la jerga del desarrollador de Debian) se comporta mal - colocando exit 0 cerca del inicio de la /var/lib/dpkg/info/<packagename>.postinst guión y ejecución dpkg --configure --pending por lo general ayuda

Pero lo usual advertencia audaz aplica: no siga estos consejos a ciegas: las secuencias de comandos de configuración de paquetes no solo están para cometer errores y hacer que el usuario no esté contento; por lo general, realizan ciertas configuraciones o limpiezas, etc., por lo que las medidas como la descrita deben considerarse como último recurso.

kostix
fuente
echar un vistazo a edit2
Filip Haglund
@FilipHaglund, bien, ahora no tengo idea de qué hace eso start objetivo fallido, así que intentaría el truco detallado en mi primer comentario a tu publicación original.
kostix
@FilipHaglund, primero puede intentar depurar el script rc, agregando algo como set -e -u -x en algún lugar después del shebang (que #!/bin/sh línea) cerca de la parte superior de ese archivo, lo que obligaría al shell a ejecutar ese script a fallar en errores ( -e ) y accediendo a variables unset ( -u ) así como para imprimir el seguimiento de ejecución de comando a su salida de error estándar ( -x ).
kostix