¿Cómo crear un entorno para bibliotecas y binarios?

¿Cómo crear un entorno para bibliotecas y binarios?

Tengo una herramienta que no se puede ejecutar en mi escritorio Linux. Entonces me gustaría crear una carpeta que contenga todos sus requisitos y ejecutarla en la carpeta. La máquina virtual o el contenedor no son una solución aquí por alguna razón.

Arranqué un Ubuntu Trusty en /data/LTS, y tengo todo lo que la herramienta necesita instalado ejecutando un chroot jail en /data/LTS.

Ahora emito:

PATH=/data/LTS/usr/local/sbin:/data/LTS/usr/local/bin:/data/LTS/usr/sbin:/data/LTS/usr/bin:/data/LTS/sbin:/data/LTS/bin \
LD_LIBRARY_PATH=/data/LTS/usr/local/lib:/data/LTS/usr/lib/x86_64-linux-gnu:/data/LTS/usr/lib:/data/LTS/lib/x86_64-linux-gnu:/data/LTS/lib \
PYTHONHOME=/data/LTS/usr \
/data/LTS/usr/bin/python /tmp/test.py

Yo obtengo:

Inconsistencia detectada por ld.so: dl-close.c: 759: _dl_close: ¡La afirmación `map->l_init_call' falló!

¿Qué tengo que hacer?

Respuesta1

Esto parece un problema con el cargador. Es decir, estás utilizando el cargador desde el entorno exterior.

Intente anteponer el comando con /data/LTS/lib/ld.so o ld-XYso. Este es el cargador y al hacerlo usará el del sistema adjunto.

Respuesta2

Razón encontrada. Es por la ruta absoluta a ld.so. Sin más modificaciones, /data/LTS/usr/bin/python usará ld.so del sistema real en lugar del entorno falso.

/data/LTS/lib/ld.so /data/LTS/usr/bin/python /tmp/test.pyobras.

información relacionada