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 のコンテナを作り、同じ手順でビルドを行う。