最終更新: 2006-09-13 (水) 05:43:05
このページをDeliciousに追加 このページをはてなブックマークに追加 このページをlivedoor クリップに追加 このページをYahoo!ブックマークに追加

PHP5 の sarge 用パッケージのビルド

目次

Dotdeb 版の PHP5 について

Debian sarge で提供されている PHP はバージョンが 4.3.10 であるため、 PHP5 を使いたい場合は、testing のパッケージを使ったり、 Dotdeb 版のパッケージを使ったりする。 しかし、Dotdeb 版のパッケージは i386 と amd64 用のものしか用意されておらず、 他のアーキテクチャのマシンでは利用することができない。 Debian 化した玄箱 でも Dotdeb 版のパッケージを使いたいので、 自分でソースパッケージからビルドしてみることにする。

なお、クロスコンパイルすることも不可能ではないと思うが、 私は途中で挫折した *1 ので、ここではセルフコンパイルの方法についてのみ説明する。

APT の設定

/etc/apt/sources.list に以下の設定を追加 *2

deb http://packages.dotdeb.org/ stable all
deb-src http://packages.dotdeb.org/ stable all

パッケージのリストを更新。

# aptitude update

libming のパッケージのビルド

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.orig.tar.gz
  • libming_0.3-0.dotdeb.0.diff.gz
  • libming_0.3-0.dotdeb.0.dsc

ソースが 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 のソースのダウンロード

PHP5 のソースパッケージをダウンロード。

$ apt-get source php5

以下の3つのファイルがダウンロードされる。

  • php5_5.1.6.orig.tar.gz
  • php5_5.1.6-0.dotdeb.2.diff.gz
  • php5_5.1.6-0.dotdeb.2.dsc

ソースが php5-5.1.6 ディレクトリに展開されるので、そこに移動。

$ cd php5-5.1.6

PHP5 のソースパッケージの修正

そのままビルドすると 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 のパッケージのビルド

以下のコマンドを実行し、PHP5 のパッケージをビルド。

$ debuild -rfakeroot -us -uc

ビルド後の Lintian のチェックでエラーが出ていないことを確認 *4

*1 150 個以上のライブラリを手作業でインストールしたり、configure が止まってしまう箇所を修正するなど、おそろしく面倒。
*2 i386, amd64 以外のアーキテクチャの場合は、deb の設定は無意味なので deb-src の設定だけでよい。
*3 本来は apt-get build-dep libming で良いのだが、それだと libpng2-dev パッケージが間違ってインストールされてしまう。
*4 ちなみにビルドに掛かった時間は、手元の PC で約40分、玄箱/HG で5時間程度。

(Counter:1, Today:1, Yesterday:0)
トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   最終更新のRSS