平衡点


2009/02/20

_ Debian パッケージ作成環境の構築

先日, 念願の 64bit 環境を手に入れたので, 野良パッケージ作成様の環境を構築した. 母艦は Core2Quad の Debian GNU/Linux 5.0(lenny), amd64. ここに amd64,i386 の pbuild 環境を構築する. 作成する野良パッケージは, 主に地球流体電脳倶楽部 で公開しているソフトウェア群.本家に上げたいのだけれども, ライセンスの確認(あんまり問題無さそう)とFortran コンパイラの問題ので, とりあえずは保留.

必要なソフトウェアの導入

クリーンな依存関係の test/clean な build 環境を提供するためのパッケージとして,Debian にはpbuilder がある. これを導入する. で, pbuilder では環境を固めた base.tgz を展開し chroot しているのだけれど, これを少し高速化するためのパッケージとしてcowdancer がある.これらを導入する.

環境構築

cowbuilder の設定

以下に書く内容は非常に ad hoc. 今ドキュメントを眺めてみると, もうちょっと賢いやりかたはある.

64bit 版(amd64)の base.cow を作成する. ここでは /var/cache/pbuilder/lenny-amd64.cow に置くことにする.

$ sudo cowbuilder --create \
  --distribution lenny \
  --basepath /var/cache/pbuilder/lenny-amd64.cow

32bit 版(x86)の base cow は /var/cache/pbuilder/lenny-i386.cow に作成

$ sudo cowbuilder --create \
  --distribution lenny \
  --basepath /var/cache/pbuilder/lenny-i386.cow \
  --debootstrapopts --arch --debootstrapopts i386

初期設定として, それぞれに電脳サーバの apt-line と GPG Key を追加しておく.

$ sudo -s
# HOME=/root cowbuilder --login --save-after-login

login できるのだけれども base system しか無いので vi が無い.面倒なので cowbuilder がハードリンクを貼った先(/var/cache/pbuilder/build/pid.cow) を修正する

追加した apt-line は電脳サーバの apt-line と localhost の apt-line.最初は deb file:// としていたのだけれども, pbuilder/cowbuilder は chroot しているので親のファイルが見えない. しょうがないから localhost 閲覧限定で httpd(apache) を上げて, そこから取得することにする.

追加した apt-line は以下の通り.

# GPG key: AEE995F4
deb ftp://www.gfd-dennou.org/arch/cc-env/debian-dennou/ lenny/
deb-src http://www.gfd-dennou.org/arch/cc-env/debian-dennou/ lenny/
deb http://localhost/debian/ ./
deb-src http://localhost/debian/ ./

あとは GPG key の追加. これは cowbuilder で login した shell で apt-key を実行して追加する.

apache の設定

pbuilder/cowbuilder から参照できるようにlocal に httpd を立ち上げて, 作成したパッケージが apt で取得できるようにする.その後で /etc/apache2/sites-available/pbuild を作成して以下の内容を追記.

$ sudo aptitude install apache2
$ cat /etc/apache2/sites-available/pbuild
<VirtualHost *:80>
  Alias /pbuild/ "/var/cache/pbuilder/result/"
  <Directory "/var/cache/pbuilder/result/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
  </Directory>
</VirtualHost>
$ sudo a2ensite pbuild

これで pbuilder/cowbuilder の chroot 環境でもhttp://localhost/pbuild が見えるようになる.

スクリプトの準備

パッケージの構築には以下のスクリプトを使用(( .pbuildrc で設定できる項目もあるけど )).

電脳サーバではパッケージを pool スタイルで管理していない((パッケージ名のディレクトリに置いてある))ので, パッケージ名のディレクトリを作成し, そこに結果を置くことにする.

あと, 作成したパッケージを apt で http://localhost/pbuild から取得できるように作成したパッケージを/var/cache/pbuilder/result/ にハードリンクして, apt-ftparchive を実行している(mkaptline, 実体は apt-ftparchive + 鍵署名).

# source: bash
#!/bin/bash
set -e

PWD=$(pwd)
DENNOU_PKG_NAME=`echo $@ | awk -F_ '{print $1}'`
RESULTDIR=$HOME/pbuild/result/$DENNOU_PKG_NAME
[ -d $RESULTDIR ] || mkdir -p $RESULTDIR
DISTLIST=$(ls -d /var/cache/pbuilder/*.cow)
CONFIG=$DENNOU_PKG_NAME.pbuilderrc
cat << EOF > $HOME/pbuild/$CONFIG
BUILDRESULT=$RESULTDIR/
EOF
for CHROOTDIR in $DISTLIST
do
  ARCH=$(basename $(basename $CHROOTDIR | cut -d'-' -f2) .cow)
  sudo cowbuilder --update --basepath $CHROOTDIR
  sudo cowbuilder --build \
  --basepath $CHROOTDIR \
  --configfile $CONFIG \
  --debootstrapopts --arch \
  --debootstrapopts $ARCH $@
done
sudo ln $RESULTDIR/* /var/cache/pbuilder/result/
rm -f $HOME/pbuild/$CONFIG
$HOME/bin/mkaptline

結果

そんな訳で電脳 Ruby 謹製品 Debian Packageの更新は終了. 今迄amd64 のパッケージは人に頼んでいたのだけれど, それもできるようになった.

あとは spml に必要なライブラリ ですか...

うーん. gfortran がきちんと動くようになってくれれば, 本家に入れられるのに...


連絡先など
最近の日記
  • 2024/04/28
    • 1. CF-SR3 での生活環境構築 (できてない)
  • 2024/03/29
    • 1. Debian GNU/Linux on CF-SR3
  • 2024/03/25
    • 1. org-mode → beamer でのリスト記号の一時変更
  • 2024/03/22
    • 1. 静的htmlによるGit Repository Browser
  • 2024/02/15
    • 1. org-mode → bemaer での番号付きリスト
一覧
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|02|03|04|08|09|10|11|12|
2013|01|02|03|04|05|06|08|09|10|11|12|
2014|01|02|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|09|10|
2016|02|03|
2017|01|02|03|05|06|07|09|11|12|
2018|03|06|07|10|11|12|
2019|01|02|03|04|05|07|10|12|
2020|01|02|03|04|05|08|09|10|11|12|
2021|01|02|03|05|06|07|08|09|11|12|
2022|01|02|03|04|05|06|08|10|11|12|
2023|02|03|04|06|08|09|11|12|
2024|01|02|03|04|
Back to Top ▲