我正在尝试测试构建在x86 Linux系统上的Debian软件包,但这些软件包将在ARM体系结构上执行。我的{pre,post} {inst,rm}脚本失败,出现" exec格式错误"因为chroot环境中的/ bin / bash是flash文件系统的映像,它是ARM二进制文件,而不是x86二进制文件。
我正在寻找但找不到的是dpkg的一个选项,就像--root,但它没有使用chroot。我可能需要知道一些环境变量(?)的名称,其中包含--root参数的名称。
答案 0 :(得分:0)
在chroot可执行文件中创建/bin/bash
(以及其他所有内容)可能更容易。
在主机上安装qemu-user-static
。这将为您提供静态版本中所有体系结构的QEMU用户空间模拟器 - 因此chroot中没有动态库的复杂性。它还配置binfmt支持以使用/usr/bin/qemu-arm-static
执行ARM二进制文件。
将/usr/bin/qemu-arm-static
复制到chroot的/usr/bin
。现在你应该能够正常chroot和运行程序。这样,您的Debian软件包就可以在其(仿真)本机环境中进行测试。
答案 1 :(得分:0)
除了使用qemu
的好建议之外,从dpkg 1.18.5开始,您可以将--instdir
与--force-script-chrootless
结合使用。根据维护者脚本,您可能需要调整它们以使用DPKG_ROOT
环境变量。 dpkg
手册页中有更多信息。