Как создать среду для библиотек и двоичных файлов?

У меня есть инструмент, который нельзя запустить под моим настольным Linux. Поэтому я хотел бы создать папку, содержащую все ее требования, и запустить ее в папке. По какой-то причине виртуальная машина или контейнер не являются решением.

Я загрузил Ubuntu Trusty в /data/LTS и получил все необходимое для установки, запустив chroot jail in /data/LTS .

Теперь я выпускаю:

 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 

Я получил:

Несоответствие, обнаруженное ld.so: dl-close.c: 759: _dl_close: утверждение `map-> l_init_called 'не выполнено!

Что мне делать?

Это похоже на проблему с загрузчиком. Т.е. вы используете загрузчик из внешней среды.

Попробуйте префикс команды с помощью /data/LTS/lib/ld.so или ld-XYso. Это загрузчик, и, сделав это, вы будете использовать его из прилагаемой системы.

Причина найдена. Это из-за абсолютного пути к ld.so. Без дальнейшей модификации / data / LTS / usr / bin / python будет использовать ld.so из реальной системы вместо поддельной среды.

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