我有一个工具无法在我的桌面 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
作品。