
実行中のamd64システムでmipsアーチ用のDebian / Ubuntuパッケージをクロスビルドしようとしています。私はPubilderからsbuildに至るまでいくつかのアプローチを試しましたが、常に失敗しました。後者については、Debian 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