デスクトップ Linux では実行できないツールがあります。そのため、そのツールのすべての要件を含むフォルダーを作成し、そのフォルダー内でツールを実行したいと思います。何らかの理由で、仮想マシンまたはコンテナーはここでは解決策になりません。
私は Ubuntu Trusty を でブートストラップし/data/LTS
、 で chroot jail を実行してツールに必要なものをすべてインストールしました/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
動作します。