실행 중인 amd64 시스템에서 mips 아치용 Debian/Ubuntu 패키지를 크로스 빌드하려고 합니다. 나는 Pubilder에서 sbuild에 이르기까지 여러 가지 접근 방식을 시도했지만 항상 실패했습니다. 후자에 관해서는 데비안 9를 새로 설치할 때 다음과 같이 합니다:
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/
그러나 결국 나는 다음을 얻습니다.
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.
로그에는 다음이 포함됩니다.
chroot: failed to run command 'dpkg-deb': Exec format error
chroot: failed to run command 'mount': Exec format error
내가 시도한 모든 것이 이렇게 끝났습니다.실행 형식 오류또한 다른 명령을 시도해 보십시오.
답변1
Debian 9만을 대상으로 하면 교차 구축이 쉽고 간단해집니다. Debian 8에서도 작동하지만 Debian 7에서는 약간 복잡합니다. (EmDebian은 Debian 7 이전에 제거되었습니다.)
그러나 QEMU를 실행할 수 있는 모든 시스템에서 Wheezy 패키지를 빌드하는 간단한 설정이 있으며 mipsel
, 거기에서 패키지를 빌드하는 것은 여전히 라우터에서 빌드하는 것보다 훨씬 빠릅니다.
mipsel
다음 명령을 사용하여 설정을 시작합니다.chroot
debootstrap
sudo debootstrap --arch=mipsel --foreign --variant=buildd \ --include=fakeroot,build-essential \ wheezy ./wheezy-mipsel-chroot \ http://archive.debian.org/debian
QEMU를 설치하고
binfmt_misc
다음을 지원합니다.sudo apt install qemu-user-static binfmt-support
QEMU 바이너리를 다음 위치에 복사합니다
chroot
.sudo cp /usr/bin/qemu-mipsel-static wheezy-mipsel-chroot/usr/bin
(정적으로 연결되어 있으므로 잘 작동합니다)
chroot를 입력하고 완료합니다
debootstrap
.sudo chroot wheezy-mipsel-chroot /debootstrap/debootstrap --second-stage
이제 chroot를 사용하여 패키지를 빌드할 수 있습니다. 패키지를 chroot에 수동으로 복사하여 입력하고 dpkg-buildpackage
빌드 종속성을 설치한 후 빌드합니다.
으로 빌드하려면 sbuild
최소한 schroot
chroot를 등록해야 합니다. 다음 이름의 파일을 추가합니다 /etc/schroot/chroot.d/wheezy-mipsel-sbuild
.
[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가 제대로 작동하려면 특히 chroot 내에 그룹을 설정 sbuild
하고 소유권을 수정하는 추가 단계가 필요할 수 있습니다.sbuild