web-dev-qa-db-ja.com

Debianパッケージをクロスビルドする方法

AMD64マシンでarmhfパッケージをビルドしたい。私のarmhfマシンは、AMD64マシンよりもかなり遅いです。

7
tshepang

まず、マルチアーチ環境をセットアップする必要があります( 詳細 ):

Sudo dpkg --add-architecture armhf
Sudo apt update

ソースパッケージをダウンロードします(例としてlessを使用):

apt-get source less

ディレクトリに移動し、最後にパッケージをビルドします。

cd less-458
dpkg-buildpackage -us -uc -b --Host-Arch armhf

上記のコマンドの特別なフラグは--Host-Arch。他のフラグは以下を意味します:

  • ソースパッケージに署名していません
  • .changesファイルに署名していません
  • バイナリのみのビルドを行っています

これら3つは、Debian Developers/Maintainersのような公開リポジトリを構築しているユーザーにのみ関連します。

5
tshepang

速度よりも利便性を重視する場合は、次の方法を使用できます。この方法では、qemを使用してARMシステムをエミュレートします。

必要なツールをインストールしたパッケージをインストールしますpbuilder-dist

Sudo apt install ubuntu-dev-tools

次のコマンドは、ビルドするchrootを作成し、そのtarballを作成します(この場合は、armhfアーキテクチャ用のDebian 8システム)。

pbuilder-dist jessie armhf create

いくつかのパッケージのソースを取得します:

apt-get source bb

パッケージをビルドします。

pbuilder-dist jessie armhf bb_1.3rc1-8.3.dsc

私のマシンではこれに約370秒、私が構築していたARMシステムでは約250秒かかりました。

3
tshepang

Debian 9では、pbuilderを使用:

pbuilder build --Host-Arch armhf foo.dsc

またはsbuild:

sbuild --Host=armhf foo.dsc

いいえ、追加のchrootをセットアップする必要はありません。ネイティブビルド用の通常のchrootが機能します。

sbuildは長い間--Hostをサポートしており、時間の経過とともにさまざまなアプローチを使用しています。pbuilderはバージョン0.227に--Host-Archを追加し、Debian 8ユーザーは必要なパッケージを見つけることができますジェシーのバックポートで。)

2
Helmut Grohne