玩式草子─ソフトウェアとたわむれる日々

第5回 Plamo Linux 4.71とメタ・ビルドスクリプト

この記事を読むのに必要な時間:およそ 4 分

前回,Plamo Linux 4.7について紹介したばかりですが,4.7のリリースに間に合わなかったパッケージや公開後にセキュリティアップデートがあったパッケージをまとめたPlamo Linux 4.71を11月の下旬に公開しました。

4.71というバージョン番号が示すように,今回の更新はメンテナンス・リリースという位置づけで,必要なパッケージを個別にアップデートしても追従できるレベルの変更です。そのため,4.7をインストールした人向けに,4.7から更新したパッケージのみをまとめてみました。

更新したパッケージはインストーラのカテゴリ分けに従って分類されているので,更新したいカテゴリのみを適用することも可能です。

更新したパッケージを確認

 % ls
 00_base/     02_x11/  05_kde/    07_tex/     09_webdb/  md5sum
 01_minimum/  03_ext/  06_gnome/  08_kernel/  README
 % ls -R
 ./00_base:
 bash-3.2.50-i586-P1.tgz               openssl-0.9.8l-i586-P1.tgz
 dhcp-3.1.3-i586-P1.tgz                readline5-5.2.14-i386-P1.tgz
 kernel-2.6.31.6_plamoSMP-i586-P1.tgz  update-4.71-noarch-P6.tgz
 openssh-5.3p1-i586-P1.tgz             update.sh*
 ./01_minimum:
 bc-1.06-i586-P3.tgz           kernel_headers-2.6.31.6_plamoSMP-i386-P1.tgz
 ...

それぞれのディレクトリには簡単なアップデート用のスクリプト(update.sh)を用意し,このスクリプトを実行すればそのディレクトリにあるパッケージが更新されるようになっています。

これらのディレクトリに入っているのは4.7から更新されたパッケージだけなので,Plamo-4.7でインストールしていないカテゴリーを選んでも必要なパッケージは揃いません。インストール時に選ばなかったカテゴリーを追加する場合は,いったん4.7のインストール用CD/DVDから追加したいカテゴリーのパッケージをインストールした上で,更新を行ってください。

4.7のリリースから1ヵ月半くらいしか経っていないので,それほど大きな規模にはならないだろうとタカをくくっていたのですが,実際にまとめてみるとパッケージ数で185約1GBほどのサイズにも達していました。

パッケージ数的には細かくモジュール化されて個数が増えたxorgサーバを更新した結果,サイズ的にはptetexやKDEといった大物が更新された結果で,今回の特殊事情という部分も大きいのですが,昨今のOSS開発の活発さを改めて印象づけられることになりました。

PlamoBuildスクリプトとメタ・ビルドスクリプト

前回紹介したように,最近のソフトウェアはたいていGNUのautoconf/automakeシステムを採用しているので,テンプレート化されたPlamoBuildスクリプトを用いれば,ヘッダ部分の修正のみでほとんどの場合に対応できます。しかし,XウィンドウやGNOMEデスクトップ環境など,構成するソフトウェアが200本近い規模のシステムでは,いちいちテンプレートファイルをコピーしてヘッダ部分を修正するだけでも大変な作業になります。

一方,ヘッダ部分に必要な情報のうち,パッケージ名やバージョン番号といった情報はソースコードのファイル名等から生成できますし,README等のドキュメントファイルも,たいてい同じような名前になっているので,ソースコードに含まれているそれらしいファイルを拾えば揃えることができます。

このように考えて,最近ではPlamoBuildスクリプトを作るためのスクリプトというのを用意して,PlamoBuildスクリプトも自動生成するようにしています。

このPlamoBuildスクリプトを作るためのスクリプト(正式な名称はつけていないので,以下ではとりあえずメタ・ビルドスクリプトと称しておきます)はPythonで書いてあり,こちらから入手することができます。

メタ・ビルドスクリプト(make_PlamoBuild.py)はソースコードの書庫ファイル名(tar.gz/tar.bz2ファイル)かソースコードを展開したディレクトリ名を引数に取り,そのソースコードをビルドするために必要なPlamoBuildスクリプトを生成します。

make_PlamoBuild.pyの使い方

 % ls
 xwd-1.0.3.tar.bz2
 % /share/Srcs/make_PlamoBuild.py xwd-1.0.3.tar.bz2 
 dirname =  xwd-1.0.3
 making PlamoBuild.xwd-1.0.3 ...
 % ls 
 PlamoBuild.xwd-1.0.3*  xwd-1.0.3/  xwd-1.0.3.tar.bz2

生成されたPlamoBuildスクリプト(PlamoBuild.xwd-1.0.3)のヘッダ部はこのようになっていて,先頭のurl行(ソースコードの入手先のURL)以外の情報は自動的に生成されます。

PlamoBuildスクリプトのヘッダ部

 #!/bin/sh
 ##############################################################
 url='input sourcecode url here'
 pkgbase=xwd
 vers=1.0.3
 arch=i586
 build=P1
 src=xwd-1.0.3
 OPT_CONFIG='--build=i586-pc-linux --disable-static'
 DOCS='AUTHORS COPYING ChangeLog INSTALL NEWS README'
 patchfiles=''
 ##############################################################
 ....

生成したPlamoBuildスクリプトは,前回紹介したようにconfigやbuildを指定して段階ごとの実行もできますし,引数を指定せずに一気にパッケージ生成まで進めることも可能です。

PlamoBuildスクリプトの実行例

 % ./PlamoBuild.xwd-1.0.3
 configure: WARNING: unrecognized options: --disable-static
 checking for a BSD-compatible install... /usr/bin/install -c
 checking whether build environment is sane... yes
 checking for a thread-safe mkdir -p... /bin/mkdir -p
 ...
 make[1]: ディレクトリ `/home/kojima/Test/build' に入ります
   CC     clientwin.o
   CC     dsimple.o
 ...
 make[1]: ディレクトリ `/home/kojima/Test/build' から出ます
 Do you want to package as root? [y/N] n
 make[1]: ディレクトリ `/home/kojima/Test/build' に入ります
 ...
 pruning symlink in /home/kojima/Test/work/usr/share/man/mann
 Making ../xwd-1.0.3-i586-P1.tgz...
 
 % ls
 PlamoBuild.xwd-1.0.3*  i.et  pivot/  xwd-1.0.3/             xwd-1.0.3.tar.bz2
 build/                 i.st  work/   xwd-1.0.3-i586-P1.tgz

メタ・ビルドスクリプトでは,ファイル名等から生成できないソースコードの入手先は空欄にしていますが,この部分はブラウザやFTPクライアントでダウンロードしたURLをcut&pasteすればいいので,PlamoBuildスクリプト作成の手間はずいぶん省けます。

著者プロフィール

こじまみつひろ

Plamo Linuxとりまとめ役。もともとは人類学的にハッカー文化を研究しようとしていたものの,いつの間にかミイラ取りがミイラになってOSSの世界にどっぷりと漬かってしまいました。最近は田舎に隠棲して半農半自営な生活をしながらソフトウェアと戯れています。

URLhttp://www.linet.gr.jp/~kojima/Plamo/index.html

コメント

コメントの記入