Inicio > Geek, General > Como rescatar un IPCop que no encuentra las librerías dinámicas

Como rescatar un IPCop que no encuentra las librerías dinámicas


Resulta que el otro día estaba haciendo unas pruebas para modificar el IPCop para agregar un par de binarios que no vienen con el IPCop standard.

Para esto tenía tres opciones:

  • Copiar el binario y las librerías dinámicas “que me pidiera”
  • Compilarlo en forma estática y copiarlo
  • Compilarlo en forma dinámica y copiarlo
  • Debo aclarar que la primera es la opción más burda y facilista (luego veremos que no siempre resulta facil y puede llegar a ser muy peligrosa); la segunda es una opción intermedia y la tercera sería la adecuada.

    El tema es que aún sabiendo que era la peor opción creí que sería la más fácil y decidí copiar el binario y mediante un strace determinar las librerías que debía copiar. Una vez copiado el binario y las correspondientes librerías a un mismo directorio (para no ensuciar la instalación standard de IPCop) debía hacer que encontrara las librerías dinámicas en el directorio que las había puesto. por lo que tomé una pésima decisión, modificar el archivo /etc/ld.so.conf, el cual en IPCop esta vacío (“que puede salir” mal me dije!).

    El hecho en si de modificar el /etc/ld.so.conf no es tan grave en si mismo, sino que el problema es que una de las librerías que copié fue la libc.so, si, si, pésima desición, ya que esta librería es crítica para el funcionamiento del sistema.

    El tema es que modifiqué el archivo /etc/ld.so.conf y corrí el ldconfig, a partir de ese momento todo comando que intentaba correr dejó de funcionar. Y esto es lógico ya que todo o practicamente todo esta linkeado contra esta librería y al haber puesto una de otra versión en el sistema, ya ningún nuevo programa que quería ejecutar encontraba lo que necesitaba, por lo cual solo funcionaba lo que estaba corriendo en ese momento y si rebooteaba el sistema ya no funcionaría más. No funcionaba ni un simple ls.

    Luego de una momento de desesperación y sentimientos ambiguos de indignación, impotencia y de pensar “no puedo ser tan #$”&#/%” de haber hecho lo que acabo de hacer” decidí calmarme y pensar.

    Cuando se corre el comando ldconfig crea el archivo /etc/ld.so.cache en base a lo que estaba en el archivo /etc/ld.so.conf, con lo cual necestaba volver a modificar el archivo /etc/ld.so.conf y correr el ldconfig para solucionar el problema. Pero obviamente el vi, sed o lo que se les ocurra ya no andaba, con lo cual como podía hacer esto?. En un momento pensé haber econtrado la solución.

    Si normalmente el IPCop no tiene nada en el archivo /etc/ld.so.conf, si borraba el archivo /etc/ld.so.cache todo volvería a la normalidad, y si bien esto es cierto, no podía borrarlo ya que el rm tampoco andaba!!!. pero al solución no estaba lejos, finalmente intenté vaciando el archivo con > /etc/ld.so.cache y todo volvió a la normalidad.

    Una vez que todo estaba nuevamente como siempre, y al notener un entorno de desarrollo instalado para el IPCop compilé de forma estática los binarios que necesitaba y todo listo.

    Anuncios
    Categorías:Geek, General
    1. Aún no hay comentarios.
    1. No trackbacks yet.

    Responder

    Introduce tus datos o haz clic en un icono para iniciar sesión:

    Logo de WordPress.com

    Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

    Imagen de Twitter

    Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

    Foto de Facebook

    Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

    Google+ photo

    Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

    Conectando a %s

    A %d blogueros les gusta esto: