deb パッケージのビルドのメモ

gphoto2 が Nikon Coolpix S9700 でうまく動かないので、 パッケージになっているバージョンより新しいバージョンを使うために deb パッケージ (gphoto2、libgphoto2-6 など) を自分でビルドした。 どうやるのが標準的なのかわからないが、 今回は LXC で専用のコンテナを作り、そこでパッケージのビルドを行った。

LXC のコンテナの作成

lxc-create -t download -n xenial -- -d ubuntu -r xenial -a amd64

でコンテナを作成する。

Ubuntu 15.04 上の LXC コンテナとブリッジ接続する でブリッジ接続の設定をしてあるので

lxc-start -n xenial -d -s lxc.network.ipv4=10.0.3.101

で作成したコンテナを動かす。

lxc-attach -n xenial

でコンテナの root の端末を実行する。

apt-cacher-ng を使用している場合は、 /etc/apt/apt.conf.d/02proxy を作成して

Acquire::http::Proxy "http://10.0.3.1:3142";
Acquire::ftp::Proxy "ftp://10.0.3.1:3142";

のような設定を書き込む。

lxc-attach だと環境変数の設定などで動作が不審なので、 openssh-server をインストールして SSH を用いることにした。

apt-get install openssh-server

また、ubuntu というユーザが作成されているので、このユーザのパスワードを設定する。

passwd ubuntu

ここでログアウトする。

ここで、後で初期化できるように、スナップショットをとっておく。

lxc-snapshot -n xenial

SSH でログインできることを確認する。

ssh ubuntu@10.0.3.101

として、設定したパスワードを入力する。

以下は、この SSH での端末での作業になる。

bash の補完

普通に Ubuntu をインストールより、インストールされるパッケージが少なく、 bash の補完が効かない。bash-completion をインストールすればよい。

apt-get install bash-completion

/etc/apt/sources.list

/etc/apt/sources.list を見ると

deb http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu xenial-security main restricted universe multiverse

となっている。deb-src の行がないので apt-get build-dep でパッケージをインストールできない。

deb http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted universe multiverse

とする。

ビルドに必要なパッケージ

apt-get update
apt-get build-dep gphoto2 libgphoto2-6

として gphoto2 と libgphoto2-6 をビルドするためのパッケージをインストールする。

gbp でビルドするので

apt-get install git-buildpackage

でインストールしておく。

gphoto2 のビルド

git clone https://anonscm.debian.org/git/pkg-phototools/libgphoto2.git

でパッケージのソースコードをダウンロードする。

cd libgphoto2
gbp buildpackage --git-ignore-new --git-upstream-tree=upstream/2.5.10 --git-builder="debuild -us -uc"

でビルドする。成功したら一つ上のディレクトリに libgphoto2-6_2.5.10-2_amd64.deb などのパッケージができている。 gphoto2 パッケージのビルドに libgphoto2-6 が必要なので

dpkg -i ../libgphoto2*.deb

でインストールする。

同様に gphoto2 も

cd ..
git clone https://anonscm.debian.org/git/pkg-phototools/gphoto2.git
gbp buildpackage --git-ignore-new --git-upstream-tree=upstream/2.5.10 --git-builder="debuild -us -uc"

のようにしてビルドする。ビルドが成功したら

dpkg -i ../gphoto2*.deb

でインストールする。

i386 版のビルド

lxc-create -t download -n xenial_i386 -- -d ubuntu -r xenial -a i386

などとして i386 のコンテナを作り、同じ手順でビルドを行う。

参考

Tags of current page

, ,