我正在尝试schroot
在 64 位 Ubuntu(实际上是 Lubuntu)Raring 安装上运行 32 位应用程序。我成功创建了chroot
以下命令填充的内容:
sudo debootstrap --arch=i386 raring /srv/chroot/raring_i386 http://archive.ubuntu.com/ubuntu
然而,当我进入chroot
环境并尝试启动应用程序时,我收到有关缺少共享库的错误。例如:
error while loading shared libraries: libICE.so.s: cannot open shared object file: No such file or directory
到目前为止,我的chroot
环境中所有缺失的库都位于usr/lib/i386-linux-gnu/
。我可以从另一个 32 位 Ubuntu 完整安装中复制这些缺失的库,但我认为debootstrap
上面的步骤应该直接下载这些库。有人可以提供一些关于如何使用debootstrap
创建chroot
环境的额外见解吗?我是否可能错过了某个步骤,或者在调用 时是否有其他选项来debootstrap
告诉它获取一些额外的共享库?
非常感谢!
答案1
经过一些反复试验和幸运的网络搜索后,我想我找到了我想要的解决方案。以下是我解决问题所用步骤的摘要:
在环境中
chroot
运行以下命令来显示缺少的库:ldd <binary executable>
这将显示缺失的库为“未找到”。或者,此命令可以作为管道传送给 grep,如下所示:
ldd <binary executable> | grep "not found"
使用以下命令来找到提供缺失库的软件包:
apt-cache search <library name>
从环境内安装上一步中的包
chroot
(可能会找到多个):sudo apt-get install <package name>
对所有缺失的库重复上述步骤后,我能够从chroot
环境成功启动该应用程序。
我发现的为我提供搜索和安装丢失库的线索的参考资料是这里。