Wie erstelle ich eine Umgebung für Bibliotheken und Binärdateien?

Wie erstelle ich eine Umgebung für Bibliotheken und Binärdateien?

Ich habe ein Tool, das unter meinem Desktop-Linux nicht ausgeführt werden kann. Daher möchte ich einen Ordner erstellen, der alle seine Anforderungen enthält, und es in diesem Ordner ausführen. Eine virtuelle Maschine oder ein Container sind hier aus irgendeinem Grund keine Lösung.

Ich habe ein Ubuntu Trusty in gebootet /data/LTSund alles, was das Tool braucht, durch Ausführen eines Chroot-Jails in installiert /data/LTS.

Jetzt gebe ich aus:

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

Ich bekomme:

Von ld.so erkannte Inkonsistenz: dl-close.c: 759: _dl_close: Assertion „map->l_init_called“ fehlgeschlagen!

Was soll ich machen?

Antwort1

Dies scheint ein Problem mit dem Loader zu sein. D. h. Sie verwenden den Loader aus der externen Umgebung.

Versuchen Sie, dem Befehl das Präfix /data/LTS/lib/ld.so oder ld-XYso hinzuzufügen. Dies ist der Loader und wenn Sie dies tun, verwenden Sie den des beiliegenden Systems.

Antwort2

Grund gefunden. Es liegt am absoluten Pfad zu ld.so. Ohne weitere Änderungen wird /data/LTS/usr/bin/python ld.so vom tatsächlichen System anstelle der gefälschten Umgebung verwenden.

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

verwandte Informationen