RedHat Linux 9 > Apache 2.0.61 > rpm > rebuild > from source > httpd-2.0.61.ta
r.gz
> apr / apr-devel > rpm > rebuild >
> php 4.4.7 > configure > make
このBlogエントリでは、Redhat9用 Apache 2.0.61のRPMおよびSRPMを作成してインストールする経過を書いています。またi386.rpmおよび src.rpmを公開しています。php 4.4.7については rpm化を断念してconfigure makeしています。→後日RPM化
に成功しました。
元々はこのPHPスクリプトを動かしたかったのです。
PCサイト->携帯変換スクリプト(pc2m)
このスクリプトが、PHPのバージョン4.3.0以上を要求するのですが、手元のサーバのPHPは4.2.2。
それではということで、PHP 4.x系でSRPMで転がっているものはないかと探してみると
php-4.3.3-4.1.src.rpm
というのがありました。本当はPHP 4系はディスコンになることが決まっているのでPHP5にしたいところですが、メジャーバージョンまで一気に変わるのは不安すぎるのと、src.rpmが存在するという安心感から、4.3.3を選択。
rpm -ivh php-4.3.3-4.1.src.rpm して、ソース/SPECファイル類を展開し、php.specファイルを確認してみると、ちゃんと2バイト文字を処理するための
--enable-mbstring
--enable-mbstr-enc-trans
--enable-mbregex
も設定済みで安心。早速 rpmbuild --rebuild php-4.3.3-4.1.src.rpm すると、apacheのバージョンが2.0.44以上でなきゃダメというメッセージでRPMパッケージのビルドが止まってしまいます。そこでついに重い腰を上げてhttpd (apache)のバージョンを上げてみることにしました。
なるべくなら、tarballからの野良ビルドは避けたいので、適当なRPMパッケージはないかと検索すると、
Apache2.2.6をパッケージ化してインストール
という記事を発見。
早速参考にしていただきます。2.0.41からいきなり2.2.6というのはあまりに危険なので、2.0.61を使ってみます。
apache 2.2.6 2.0.61 のtarballを入手して、/usr/local/src以下に展開
# cd /usr/local/src
# wget http://ftp.kddilabs.jp/infosystems/apache/httpd/httpd-2.0.61.tar.gz
# tar zxf httpd-2.0.61.tar.gz
|
ここで、このアーカイブ中に含まれている aprおよびapr-utilsをそれぞれRPMパッケージ化してインストール。
aprのパッケージ化
# cd httpd-2.0.61/srclib
# cp apr/build/rpm/apr.spec.in apr/build/rpm/apr.spec
# vi apr/build/rpm/apr.spec
Version: 0.97 ←書き換え (apache 2.2.xでは1.2.10以上のようです)
Release: 1 ←書き換え
%configure \
--prefix=/usr \
・・・・
--disable-ipv6 \ ← configure末尾にオプション追加
# cp -ipr apr apr-0.97
# tar zcf apr-0.97.tar.gz apr-0.97
# rpmbuild -ta apr-0.97.tar.gz
|
※このとき、doxygenがインストールされていないと、エラーでビルドできません。
# yum install doxygen してインストールしましょう。
aprとapr-develのインストール
# cd /usr/src/redhat/RPMS/i386/; rpm -ivh apr-0.97-1.i386.rpm apr-devel-0.97-1.i386.rpm; cd -
|
apr-utilのRPM化 (上記のapr,apr-develをインストールしておかないとビルド不可)
# cp apr-util/build/rpm/apr-util.spec.in apr-util/build/rpm/apr-util.spec
# vi apr-util/build/rpm/apr-util.spec
Version: 0.97
Release: 1
# cp -ipr apr-util apr-util-0.97
# tar zcf apr-util-0.97.tar.gz apr-util-0.97
# rpmbuild -ta apr-util-0.97.tar.gz
|
apr-util apr-util-develのインストール
# cd /usr/src/redhat/RPMS/i386/; rpm -ivh apr-util-0.97-1.i386.rpm apr-util-devel-0.97-1.i386.rpm; cd -
|
これでやっとhttpd-2.0.61のビルドに入れます。
# cd /usr/local/src
# rpmbuild -ta httpd-2.0.61.tar.gz
|
そして、インストール。
[root@web i386]# rpm -Uvh httpd-2.0.61-1.i386.rpm httpd-manual-2.0.61-1.i386.rpm httpd-devel-2.0.61-1.i386.rpm mod_ssl-2.0.61-1.i386.rpm
エラー: Failed dependencies:
/usr/local/bin/perl is needed by httpd-devel-2.0.61-1
httpd-mmn = 20020628 is needed by (installed) mod_perl-1.99_07-5
httpd-mmn = 20020628 is needed by (installed) mod_python-3.0.1-4
httpd-mmn = 20020628 is needed by (installed) php-4.2.2-17.17.legacy
libapr.so.0 is needed by (installed) mod_perl-1.99_07-5
libaprutil.so.0 is needed by (installed) mod_perl-1.99_07-5
|
あれ?
どうも元から入っているhttpd-2.0.40-21.21-legacyに含まれるライブラリに依存するパッケージが存在する模様です。mod_perlとmod_pythonをアンインストール。さらに php-4.22-17.17.legacyと、php-pgsqlなどphp-4.22に依存するパッケージをすべてアンインストールします。
これでも、httpd-devel-2.0.61-1について/usr/local/bin/perlが足りないよと言われます。/usr/local/bin/perlは/usr/local/bin/perl5.8.0からのシンボリックリンクとしては存在しています。
まずは、httpd-devel以外をインストールし、etc/init.d/httpd restartして正常動作を確認します。
次にhttpd-develですが、rpm -ivh --forceでもだめなので、やむを得ずrpm -ivh --nodepsでインストール。httpd-develがインストールできないと、phpが使用する/usr/sbin/apxsがインストールされません
なお、apacheを2.0から2.2にアップデートする際には、設定ファイル周りにもいろいろ変更がある模様。よく調べてからインストールしないと泣く事になりそうです。このあたり
で少しお勉強してからにします。
Apacheのバージョンアップができたらようやくphpのrpmパッケージをリビルドできるようになります。
リビルドしたパッケージを以下に置いておきます。
(自己責任でご利用ください)
SRPM : httpd-2.0.61-1.src.rpm
RPM: http://www.nasu-net.or.jp/~hiromiti/RPMS/i386
httpd本体とhttpd-devel,apr,apr-devel,apr-util
さて、やっとphpのRPMパッケージのリビルドなんですが、どうしてもRPMファイル生成の最終段階でこけてしまいます。
そこでやむを得ず、本家(http://www.php.net/)からphp-4.4.7のソースコードを持ってきて素直に展開し、configure make make installしてしまうことにしました。
# wget http://jp.php.net/get/php-4.4.7.tar.gz/from/jp2.php.net/mirror
# ./configure --with-apxs2=/usr/sbin/apxs \
--enable-mbstring \
--enable-mbregex \
--with-mysql \
--with-gd \
--with-jpeg-dir=/usr/lib \
--with-png-dir=/usr/lib \
--with-zlib-dir=/usr/lib \
--with-openssl \
--enable-calender \
--enable-dba \
--enable-exif \
--enable-ftp
# make
# make install
|
このあと、httpd.confに以下の行があることを確認します。
AddType application/x-httpd-php .php .php4
LoadModule php4_module /usr/lib/httpd/modules/libphp4.so
|
LoadModuleの行はインストーラが勝手に付けてくれることになっていますが、httpdがpreforkで動いているのに、
<IfModule worker.c>
LoadModule cgid_module modules/mod_cgid.so
LoadModule php4_module /usr/lib/httpd/modules/libphp4.so
</IfModule>
|
こんなところに入れてくれたりするので注意が必要です。私の場合はpreforkなので、<IfModule prefork.c>と次の</IfModule>の間にコピーしてやりました。
変更が完了したら、httpdを再起動します。
/etc/init.d/httpd restart
|
そして、pc2mに付属のチェックスクリプトをブラウザから呼び出します。
http://webserver/_check.php
「必要な環境は整っているようです」「画像変換テストは正常に終了したようです」と表示されれば成功です。