yum/aptリポジトリのマルチアーキテクチャ対応
This content is a draft and will not be included in production builds.
RPMの場合
Section titled “RPMの場合”1つのspecファイルから複数のアーキテクチャでビルドしたい場合、切り替えができないので BuildArch を定義してはいけない。代わりに、rpmbuild の —target オプションでビルド時に指定する。
rpmbuild --define 'buildarch <arch>' --target <arch>ビルドしたRPMパッケージは、アーキテクチャごとのディレクトリに入れておき、それぞれをcreaterepoでリポジトリにする。
$ ls repoaarch64x86_64
$ createrepo repo/x86_64$ createrepo repo/aarch64debの場合
Section titled “debの場合”controlファイルのArchitectureをanyとしておき、ビルド時にdebuildコマンドへ -a オプションを渡す。
debuild -a $arch次に、リポジトリのconf/distributionsファイルを開いて、Architecturesにスペース区切りで必要なアーキテクチャを追加する。
Architectures: amd64Architectures: amd64 arm64あとはこれまで通りrepreproを実行するだけで、1つのリポジトリに複数のアーキテクチャを含められる。
reprepro -b repo *.debこのリポジトリを利用する側では、必要なアーキテクチャをカンマ区切りで記述する。
deb [arch=amd64,arm64] https://example.com/repoamd64アーキテクチャのDebianでarm64ビルドする
Section titled “amd64アーキテクチャのDebianでarm64ビルドする”amd64環境でarm64にCのソースコードをビルドする場合、crossbuild-essential-arm64をインストールする必要がある。Goでcgoを利用する場合も条件は同じ。
sudo apt-get updatesudo pat-get install -y rpm file devscripts crossbuild-essential-arm64