Debian sarge で提供されている PHP はバージョンが 4.3.10 であるため、 PHP5 を使いたい場合は、testing のパッケージを使ったり、 Dotdeb 版のパッケージを使ったりする。 しかし、Dotdeb 版のパッケージは i386 と amd64 用のものしか用意されておらず、 他のアーキテクチャのマシンでは利用することができない。 Debian 化した玄箱 でも Dotdeb 版のパッケージを使いたいので、 自分でソースパッケージからビルドしてみることにする。
なお、クロスコンパイルすることも不可能ではないと思うが、 私は途中で挫折した *1 ので、ここではセルフコンパイルの方法についてのみ説明する。
/etc/apt/sources.list に以下の設定を追加 *2。
deb http://packages.dotdeb.org/ stable all deb-src http://packages.dotdeb.org/ stable all
パッケージのリストを更新。
# aptitude update
PHP5 のビルドに必要なパッケージのうち、 libming と libming-dev は Dotdeb が提供するパッケージなので、 i386, amd64 用のパッケージしか用意されていない。 それ以外のアーキテクチャの場合は自分でビルドする。
libming のビルドに必要なパッケージをインストール *3。
# aptitude install debhelper swig libungif4-dev libpng12-dev libz-dev # aptitude install bison # aptitude install flex
libming のソースパッケージをダウンロード。
$ apt-get source libming
以下の3つのファイルがダウンロードされる。
ソースが libming-0.3 ディレクトリに展開されるので、そこに移動。
$ cd libming-0.3
debian/control の Build-Depends: の行が間違っているので、 以下のように libpng2-dev を libpng12-dev に修正。
Build-Depends: debhelper (>> 3.0.0), swig, libungif4-dev, libpng12-dev, libz-dev
以下のコマンドを実行し、パッケージをビルド。
$ debuild -rfakeroot -us -uc
ビルド後の Lintian のチェックでエラーが出るが、 とりあえず無視して、ビルドしたパッケージをインストール。
# debi
PHP5 のビルドに必要なパッケージをインストール。
# apt-get build-dep php5
パッケージをインストールする時に聞かれる質問には、 デフォルトの選択肢を選んでおけばよい。
PHP5 のソースパッケージをダウンロード。
$ apt-get source php5
以下の3つのファイルがダウンロードされる。
ソースが php5-5.1.6 ディレクトリに展開されるので、そこに移動。
$ cd php5-5.1.6
そのままビルドすると Lintian のチェックでエラーが出たり、 パッケージの依存関係がおかしかったりするので、 いくつかのファイルに修正を加える。 以下のパッチを php5_5.1.6-0.dotdeb.2.patch として保存。
diff -ru debian.orig/control debian/control --- debian.orig/control 2006-09-08 22:41:11.000000000 +0900 +++ debian/control 2006-09-09 11:06:24.000000000 +0900 @@ -8,7 +8,7 @@ Package: php5 Architecture: all -Depends: libapache-mod-php5 (>= ${Source-Version}) | libapache2-mod-php5 (>= ${Source-Version}), php5-common (>= ${Source-Version}) +Depends: libapache2-mod-php5 (>= ${Source-Version}) | libapache-mod-php5 (>= ${Source-Version}) | php5-cgi (>= ${Source-Version}), php5-common (>= ${Source-Version}) Description: server-side, HTML-embedded scripting language (meta-package) This package is a meta-package that, when installed, guarantees that you have at least one of the four server-side versions of the PHP5 interpreter @@ -150,7 +150,7 @@ Package: php5-pear Architecture: all -Depends: php5-cli +Depends: php5-cli, php5-common (>= ${Source-Version}) Suggests: php5-dev Conflicts: php4-pear Description: PEAR - PHP Extension and Application Repository diff -ru debian.orig/php5-pear.postinst debian/php5-pear.postinst --- debian.orig/php5-pear.postinst 2006-09-08 22:41:11.000000000 +0900 +++ debian/php5-pear.postinst 2006-09-09 10:59:56.000000000 +0900 @@ -10,7 +10,7 @@ if [ ! -L /usr/share/doc/php5-pear ]; then rm -rf /usr/share/doc/php5-pear - ln -s php5 /usr/share/doc/php5-pear + ln -s php5-common /usr/share/doc/php5-pear fi exit 0 diff -ru debian.orig/rules debian/rules --- debian.orig/rules 2006-09-08 22:41:11.000000000 +0900 +++ debian/rules 2006-09-09 11:33:32.000000000 +0900 @@ -376,7 +376,9 @@ # move and install -dev files dh_movefiles --sourcedir=debian/libapache-mod-php5 rm -rf debian/libapache-mod-php5/usr/lib/php5/build/ \ - debian/libapache-mod-php5/usr/include/ + debian/libapache-mod-php5/usr/include/ \ + debian/libapache-mod-php5/usr/bin/ \ + debian/libapache-mod-php5/usr/man/ for i in Makefile.global acinclude.m4 mkdep.awk phpize.m4 scan_makefile_in.awk; do \ chmod 644 debian/php5-dev/usr/lib/php5/build/$$i; \ done
以下のコマンドを実行し、パッチを適用。
$ patch -p0 < php5_5.1.6-0.dotdeb.2.patch
以下のコマンドを実行し、PHP5 のパッケージをビルド。
$ debuild -rfakeroot -us -uc
ビルド後の Lintian のチェックでエラーが出ていないことを確認 *4。