miércoles, 1 de julio de 2009

Arreglando problemas de una instalación truncada de ia32-apt-get

Hoy estaba instalando ia32-apt-get en mi máquina, cuando se clavó la misma durante la generación de unas claves gpg. Cuando quise volver a ejecutar la misma, saltaba un error. Cuando quise desinstalar el paquete a medio instalar... otro error. Para colmo, no me dejaba instalar o desinstalar otro paquete. Hora de ensuciarse las manos :-)

Probé un par de cosas que se me fueron ocurriendo, y como no podía dar en el clavo, pregunté en #debian-ar. Marga tuvo la gentileza de darme una mano.

El primer error fué éste:

  1. root@tonks:/home/lisandro# aptitude install ia32-apt-get
  2. Leyendo lista de paquetes... Hecho
  3. Creando árbol de dependencias
  4. Leyendo la información de estado... Hecho
  5. Leyendo la información de estado extendido
  6. Inicializando el estado de los paquetes... Hecho
  7. Leyendo las descripciones de las tareas... Hecho
  8. No se instalará, actualizará o eliminará ningún paquete.
  9. 0 paquetes actualizados, 0 nuevos instalados, 0 para eliminar y 12 sin actualizar.
  10. Necesito descargar 0B/20,1kB de ficheros. Después de desempaquetar se usarán 0B.
  11. Escribiendo información de estado extendido... Hecho
  12. dpkg (subproceso): fallo al ejecutar dpkg-deb para extraer la información de control: No existe el fichero o el directorio
  13. dpkg: error al procesar /var/cache/apt/archives/ia32-apt-get_18_all.deb (--unpack):
  14.  el subproceso dpkg-deb --control devolvió el código de salida de error 2
  15. Se encontraron errores al procesar:
  16.  /var/cache/apt/archives/ia32-apt-get_18_all.deb
  17. E: Sub-process /usr/bin/dpkg returned an error code (1)
  18. Un paquete no se pudo instalar. Intentado recuperarse:
  19. Leyendo lista de paquetes... Hecho
  20. Creando árbol de dependencias
  21. Leyendo la información de estado... Hecho
  22. Leyendo la información de estado extendido
  23. Inicializando el estado de los paquetes... Hecho
  24. Leyendo las descripciones de las tareas... Hecho
Marga sugirió que me fije que existiera /var/cache/apt/archives/ia32-apt-get_18_all.deb, pero estaba ahí. Instalarlo a mano con dpkg -i daba el mismo error. Entonces sugirió que intentara abrir el archivo con mc. Ahí dió en el clavo que llevaría a al solución: mc se quejaba de que no existía dpkg-deb. Resulta ser que ia32-apt-get genera un divert de ése binario. Para solucionar el problema, bajé el paquete dpkg, lo descomprimí y copié los binarios a mano en donde correspondían. Esto no asegura que el sistema quede limpio, ya que no sabía en qué estado estaban los divert.

Ésto me permitió volver a intentar instalar el paquete ia32-apt-get obteniendo el siguiente resultado:

  1. root@tonks:/usr/bin# aptitude install ia32-apt-get
  2. Leyendo lista de paquetes... Hecho
  3. Creando árbol de dependencias
  4. Leyendo la información de estado... Hecho
  5. Leyendo la información de estado extendido
  6. Inicializando el estado de los paquetes... Hecho
  7. Leyendo las descripciones de las tareas... Hecho
  8. No se instalará, actualizará o eliminará ningún paquete.
  9. 0 paquetes actualizados, 0 nuevos instalados, 0 para eliminar y 12 sin actualizar.
  10. Necesito descargar 0B/20,1kB de ficheros. Después de desempaquetar se usarán 0B.
  11. Escribiendo información de estado extendido... Hecho
  12. Seleccionando el paquete ia32-apt-get previamente no seleccionado.
  13. (Leyendo la base de datos ...  00%
  14. 169299 ficheros y directorios instalados actualmente.)
  15. Preparando para reemplazar ia32-apt-get 18 (usando .../ia32-apt-get_18_all.deb) ...
  16. Desempaquetando el reemplazo de ia32-apt-get ...
  17. Configurando ia32-apt-get (18) ...
  18. gpg: no default secret key: clave secreta no disponible
  19. gpg: signing failed: clave secreta no disponible
  20. dpkg: error al procesar ia32-apt-get (--configure):
  21.  el subproceso installed post-installation script devolvió el código de salida de error 2
  22. Se encontraron errores al procesar:
  23.  ia32-apt-get
  24. E: Sub-process /usr/bin/dpkg returned an error code (1)
  25. Un paquete no se pudo instalar. Intentado recuperarse:
  26. Configurando ia32-apt-get (18) ...
  27. gpg: no default secret key: clave secreta no disponible
  28. gpg: signing failed: clave secreta no disponible
  29. dpkg: error al procesar ia32-apt-get (--configure):
  30.  el subproceso installed post-installation script devolvió el código de salida de error 2
  31. Se encontraron errores al procesar:
  32.  ia32-apt-get
  33. Leyendo lista de paquetes... Hecho
  34. Creando árbol de dependencias
  35. Leyendo la información de estado... Hecho
  36. Leyendo la información de estado extendido
  37. Inicializando el estado de los paquetes... Hecho
  38. Escribiendo información de estado extendido... Hecho
  39. Leyendo las descripciones de las tareas... Hecho

Bien, ése error era entendible: el proceso se había cortado durante la generación de las claves. Al principio pensé que se trataba de una clave general del sistema. Busqué sin suerte, hasta que me cansé y tomé por el lado sano: descomprimí el paquete ia32-apt-get y miré los scripts de instalación. Ahí encontré que las claves se generan en /usr/share/ia32-apt-get/.gnupg . El script chequeaba que las claves no existieran, para no generarlas de gusto en caso de que ya estuviesen creadas. bastó con eliminar ése directorio y finalmente pude instalar el paquete.

Pero no todo termina ahí: no sabía como estaba el divert. Para arreglar ése problema, desinstalé ia32-apt-get. Ésto hizo que se volvieran a borrar los binarios como dpkg-deb. Arreglando el problema a mano, procedí a volver a instalar ia32-apt-get. Listo, ahora todo éstá en su lugar :-)

En tódo ésto, fué primordial tener acceso al códgo fuente. Después me preguntan porqué me gusta tanto "éso del software libre" :-)

¡Mil gracias Marga!