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

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

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

Я загрузил Ubuntu Trusty в /data/LTS, и установил все необходимое для инструмента, запустив chroot-окружение в /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' не выполнено!

Что я должен делать?

решение1

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

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

решение2

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

/data/LTS/lib/ld.so /data/LTS/usr/bin/python /tmp/test.pyработает.

Связанный контент