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.py
obras.