¿Es posible instalar y usar dos versiones diferentes de glibc en la misma máquina? ¿Dónde solo se usa una versión para ejecutar software heredado, que se basa en viejos binarios de glibc?
¿Es posible hacerlo con la ayuda del administrador de paquetes (algo así como "instalar este paquete y sus dependencias, en /opt/old-glibc
), en lugar de administrarlo directamente
ubuntu
debian
dynamic-linking
glibc
Elazar Leibovich
fuente
fuente
ldd
te diría algo. Si es posible, es posible que deba recompilar la biblioteca libc heredada y / o instalar / recompilar paquetes de soporte. Dependiendo de la antigüedad de su aplicación, esto podría ser complicado. Veo que Debian actuallibc6
dependelibc-bin (= 2.13-0exp5)
ylibgcc1
, porlibc6
lo tanto , no tiene muchas dependencias, pero aún podría tener problemas.Respuestas:
Si es posible. Tendrá que tener mucho cuidado con las rutas de carga de la biblioteca, y es posible que deba recompilar algunas otras bibliotecas.
Como el camino de menor fricción, recomiendo instalar una versión anterior de Debian o Ubuntu en un chroot . Es decir, crea un directorio, por ejemplo
/old/etch
, e instala la distribución anterior en el árbol enraizado allí; para ejecutar ese programa problemático, llamechroot
para restringir su vista del sistema de archivos a/old/etch
.Debian (o Ubuntu) viene con un paquete para ayudar a instalar otro sistema en un chroot: schroot (sucesor de dchroot). Primero, use debootstrap para instalar la distribución anterior (instale solo el sistema base y lo que su programa necesita, no servidores). A continuación, configure schroot para ejecutar el programa convenientemente (con
/dev
,/proc
,/home
y otros “satélite” sistemas de archivos accesibles).Entonces el plan es: debootstrap, luego dchroot. En ¿Cómo ejecuto programas de 32 bits en un Debian / Ubuntu de 64 bits? , Doy un tutorial sobre una configuración similar: ya sea que esté ejecutando diferentes versiones de la distribución, o diferentes arquitecturas, o diferentes distribuciones similares a Debian, solo es cuestión de seleccionar la fuente de paquete adecuada, el resto es lo mismo.
fuente
/old/etch
?