首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在amd64: Exec格式错误色度:未能运行命令‘挂载’上构建mips包

在amd64: Exec格式错误色度:未能运行命令‘挂载’上构建mips包
EN

Unix & Linux用户
提问于 2019-05-15 19:58:28
回答 1查看 2.1K关注 0票数 2

我正在尝试在运行中的amd64系统上交叉构建一个Debian/Ubuntu包来mips arch。我尝试过几种方法,从公共建筑到建筑,但我一直失败。关于后者,在刚刚安装的Debian 9上,我这样做了:

代码语言:javascript
复制
apt-get -y install sbuild
sbuild-createchroot --arch=mips --make-sbuild-tarball=/srv/chroots/wheezy-sbuild.tgz wheezy /srv/chroots/wheezy http://archive.debian.org/debian/

但最后我得到了:

代码语言:javascript
复制
W: Failure trying to run: chroot /srv/chroots/wheezy dpkg-deb -f /var/cache/apt/archives/dpkg_1.16.18_mips.deb Version
W: See /srv/chroots/wheezy/debootstrap/debootstrap.log for details
W: Failure trying to run: chroot /srv/chroots/wheezy mount -t proc proc /proc
W: See /srv/chroots/wheezy/debootstrap/debootstrap.log for details
E: Error running debootstrap at /usr/sbin/sbuild-createchroot line 268.

日志中包含:

代码语言:javascript
复制
chroot: failed to run command 'dpkg-deb': Exec format error
chroot: failed to run command 'mount': Exec format error

我尝试过的所有方法在尝试不同的命令时都会出现Exec格式错误。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2019-05-16 20:02:48

以Debian 9为目标,交叉构建变得非常简单;Debian 8也可以这样做,但是针对Debian 7的目标有点复杂。(EmDebian在Debian 7之前就被删除了。)

然而,在任何能够运行QEMU的系统上都有构建mipsel Wheezy包的简单设置,在那里构建包仍然比在路由器上构建要快得多:

  • 使用mipsel启动chroot中的一个debootstrap设置: sudo -arch=mipsel --foreign -variant=buildd\--包含=fakeroot,build-必不可少的\ wheezy ./wheezy mipsel-chroot\ http://archive.debian.org/debian
  • 安装QEMU和binfmt_misc支持: sudo apt安装qemu-用户-静态binfmt支持
  • 将QEMU二进制文件复制到chroot中: sudo cp /usr/bin/qemu-mipsel-静态喘息-mipsel-chroot/usr/bin(它是静态链接的,所以工作正常)
  • 输入chroot和finish debootstrap:sudo chroot wheezy mipsel-chroot /debootstrap/debootstrap --第二级

现在您可以使用chroot来构建包。手动地,将您的包复制到chroot中,输入它,并在安装了构建依赖项后使用dpkg-buildpackage进行构建。

要使用sbuild进行构建,至少需要向schroot注册chroot;添加一个名为/etc/schroot/chroot.d/wheezy-mipsel-sbuild的文件,其内容如下:

代码语言:javascript
复制
[wheezy-mipsel-sbuild]
description=Debian wheezy/mipsel autobuilder
groups=root,sbuild
root-groups=root,sbuild
profile=sbuild
type=directory
directory=/usr/var/backups/steve/wheezy-mipsel-chroot
union-type=overlay

要使chroot正确地使用sbuild,可能还需要执行其他步骤,特别是在chroot中设置sbuild组并修复所有权。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/519143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档