概要
-
pbuilder
を使って、ARM向けDebianパッケージをビルド. - 元記事:Building ARM Debian packages with pbuilder
- くわしい仕組みは、追々... 、、ということで.
環境
- Linux :
debian-8.5.0-amd64-i386-netinst.iso
から、64bit版をインストール - Ubuntuだと、Ubuntu向けパッケージができる。
手順
-
sudo vi /root/.pbuilderrc
.pbuilderrc
ファイル作成/root/.pbuilderrc#!/bin/sh set -e if [ "$OS" == "debian" ]; then MIRRORSITE="http://ftp.no.debian.org/debian/" COMPONENTS="main contrib non-free" DEBOOTSTRAPOPTS=("${DEBOOTSTRAPOPTS[@]}" "--keyring=/usr/share/keyrings/debian-archive-keyring.gpg") : ${DIST:="wheezy"} : ${ARCH:="amd64"} if [ "$DIST" == "wheezy" ]; then #EXTRAPACKAGES="$EXTRAPACKAGES debian-backports-keyring" OTHERMIRROR="$OTHERMIRROR | deb $MIRRORSITE wheezy-backports $COMPONENTS" fi elif [ "$OS" == "raspbian" ]; then MIRRORSITE="http://ftp.acc.umu.se/mirror/raspbian/raspbian/" COMPONENTS="main contrib non-free" DEBOOTSTRAPOPTS=("${DEBOOTSTRAPOPTS[@]}" "--keyring=/usr/share/keyrings/raspbian-archive-keyring.gpg") : ${DIST:="wheezy"} : ${ARCH:="armhf"} elif [ "$OS" == "ubuntu" ]; then MIRRORSITE="http://no.archive.ubuntu.com/ubuntu/" COMPONENTS="main restricted universe multiverse" DEBOOTSTRAPOPTS=("${DEBOOTSTRAPOPTS[@]}" "--keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg") else echo "Unknown OS: $OS" exit 1 fi if [ "$DIST" == "" ]; then echo "DIST is not set" exit 1 fi if [ "$ARCH" == "" ]; then echo "ARCH is not set" exit 1 fi NAME="$OS-$DIST-$ARCH" if [ "$ARCH" == "armel" ] && [ "$(dpkg --print-architecture)" != "armel" ]; then DEBOOTSTRAP="qemu-debootstrap" fi if [ "$ARCH" == "armhf" ] && [ "$(dpkg --print-architecture)" != "armhf" ]; then DEBOOTSTRAP="qemu-debootstrap" fi DEBOOTSTRAPOPTS=("${DEBOOTSTRAPOPTS[@]}" "--arch=$ARCH") BASETGZ="/var/cache/pbuilder/$NAME-base.tgz" DISTRIBUTION="$DIST" BUILDRESULT="/var/cache/pbuilder/$NAME/result/" APTCACHE="/var/cache/pbuilder/$NAME/aptcache/" BUILDPLACE="/var/cache/pbuilder/build" HOOKDIR="/var/cache/pbuilder/hook.d/"
.pbuilderrc
ファイルは3つの環境変数の面倒を見てくれるよ。-
OS
: debian, raspbian, ubuntuのどれか -
DIST
: 例: wheezy, jessie, trusty -
ARCH
: 例: amd64, i386, armel, armhf
-
-
pbuilder環境の準備
環境の準備# install pbuilder and qemu-debootstrap: sudo apt install pbuilder qemu-user-static # # Ubuntu and Debian keyrings sudo apt install ubuntu-keyring sudo apt install debian-archive-keyring # # Raspbian keyring wget http://archive.raspbian.org/raspbian/pool/main/r/raspbian-archive-keyring/raspbian-archive-keyring_20120528.2_all.deb sudo dpkg -i raspbian-archive-keyring_20120528.2_all.deb # # chroot .. Raspbian-Jessie だけでいいよね.. time sudo OS=raspbian DIST=jessie ARCH=armhf pbuilder --create #real 12m17.598s #user 2m1.832s #sys 0m9.284s # # その他の例 #sudo OS=debian DIST=wheezy ARCH=amd64 pbuilder --create #sudo OS=debian DIST=wheezy ARCH=i386 pbuilder --create #sudo OS=debian DIST=wheezy ARCH=armel pbuilder --create #sudo OS=raspbian DIST=wheezy ARCH=armhf pbuilder --create #sudo OS=debian DIST=wheezy ARCH=armhf pbuilder --create # # ここにつくられました?. ls -l /var/cache/pbuilder/raspbian-jessie-armhf-base.tgz # -rw-r--r-- 1 root root 124023585 Aug 16 12:34 /var/cache/pbuilder/raspbian-jessie-armhf-base.tgz
-
raspbian-jessie-armhfのdebパッケージビルド
- ソース取得:
apt-get source パッケージ名
- ソースが展開されたフォルダの中に入って
cd パッケージ名-ほにゃらら
- ビルド:
OS=raspbian DIST=jessie ARCH=armhf pdebuild
- 成果物:
ls -l /var/cache/pbuilder/raspbian-jessie-armhf/result/*.deb
実行例cd ~ mkdir deb cd deb apt-get source i2c-tools cd i2c-tools-3.1.1/ OS=raspbian DIST=jessie ARCH=armhf pdebuild
- ソース取得:
その他
- 依存してるライブラリとかあると、そのへんうまくやってくれてるっぽい?
- うまくやってくれないのも、ある。
- ビルドのたびに、
raspbian-jessie-armhf-base.tgz
が/var/cache/pbuilder/build/<数字>
へ展開されるので、毎回、きれいな環境で、ビルドされる -
qemu-arm-static
が がんばってる