ライブラリとバイナリの環境を作成するにはどうすればよいですか?

ライブラリとバイナリの環境を作成するにはどうすればよいですか?

デスクトップ 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動作します。

関連情報