我有一個工具無法在我的桌面 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_used」失敗!
我該怎麼辦?
答案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
作品。