vserver + rebuildd + reprepro(1)
開発系じゃなくても CI なんだぜ、ということで、放り込んだら勝手にビルドして自分用パッケージリポジトリに配置される、ようなものを作ろうとしてみた。
linux-image-*-vserver なカーネルイメージをインストールして reboot 後、
sudo vserver torenia build -n torenia --hostname torenia --interface eth0:192.168.0.11/24 -m debootstrap -- -d sid # 長いので出力は省略 echo default > /etc/vservers/torenia/apps/init/mark # vserver の自動起動設定 echo SECURE_MOUNT > /etc/vservers/torenia/ccapabilities # /proc 対策 sudo vserver start torenia vserver torenia enter
ここまではホスト上での作業。vserver ゲストに入って、
aptitude update aptitude install locales tzselect aptitude install ssh python2.5 python-apt aptitude install rebuildd mercurial vi /etc/default/rebuildd # 起動設定と cowdancer の使用設定 vi /etc/rebuildd/rebuilddrc # archs と build_cmd の設定 rebuildd-init-build-system # 長いので出力は省略 rebuildd init exit
rebuilddrc の設定では、次の内容を追記した。archs を追加しないと動かない模様。
archs = i386 all build_cmd = cowbuilder --build --basepath /var/cache/pbuilder/%s-%s.cow %s_%s.dsc
vserver の中ではデバイスファイルのコピーが出来ないらしく、pbuilder が用意する chroot 環境の中で /dev/null が機能しない状態になっている。解決のため、一旦 vserver ゲストを抜けて、ホスト上でデバイスファイルをコピーする。
cd /var/lib/vservers/torenia cp -aR dev/null var/cache/pbuilder/<name>-<arch>.cow/dev
もう一度入り直して、rebuildd を起動。念のためテストしてみる。
vserver torenia enter /etc/init.d/rebulidd start /etc/init.d/rebuildd-http start rebuildd-job add jfsutils 1.1.11-1 1 sid rebuildd-job reload rebuildd-job start w3m http://localhost:9998
これで、rebuildd が使える状態になった。
どうやって rebuildd に自動でパッケージを放り込もうかな。ちょっと検討が必要。