使用 chroot 时缺少共享库

使用 chroot 时缺少共享库

我正在尝试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

经过一些反复试验和幸运的网络搜索后,我想我找到了我想要的解决方案。以下是我解决问题所用步骤的摘要:

  1. 在环境中chroot运行以下命令来显示缺少的库:

    ldd <binary executable>
    

    这将显示缺失的库为“未找到”。或者,此命令可以作为管道传送给 grep,如下所示:

    ldd <binary executable> | grep "not found"
    
  2. 使用以下命令来找到提供缺失库的软件包:

    apt-cache search <library name>
    
  3. 从环境内安装上一步中的包chroot(可能会找到多个):

    sudo apt-get install <package name>
    

对所有缺失的库重复上述步骤后,我能够从chroot环境成功启动该应用程序。

我发现的为我提供搜索和安装丢失库的线索的参考资料是这里

相关内容