Apache 2.0.50 のRPM ファイルを作って入れ替え

少し前の話題ですが、Apache 2.0.50 が出ています(日本語によるリリースノート (http://www.apache.org/dist/httpd/Announcement2.html.ja))。
前に、Apache はRPM による管理をあきらめ、ソースからインストールを行ったのですが、後に自分でRPM ファイルを作る目処が立ったので、この機会に再びRPM での管理に戻そうと思います。以下、なんとなくうまく行った様な気がする方法をメモ。実際に試すときは自己責任で。
あるいは、fumika.jp で公開されているApache RPM for Red Hat Linux 9 をありがたく使わせていただくのも良いかも。


さて、公式サイト、あるいは最寄のミラーサイトから最新版の.tar.gz ファイルを拾ってきて(今回は httpd-2.0.50.tar.gz)、"/usr/src/redhat/SOURCES" 以下に置きます。このとき、念のために"md5sum" コマンドなどでmd5 ハッシュが合っているかどうかなども見ておくとよいでしょう。
tarball の中から"httpd.spec" を取り出して"/usr/src/redhat/SPECS" 以下に入れます。httpd.spec を適当なエディタで編集します。20行目あたり、"db3-devel" はRHL9 には入っていないのでかわりに"db4-devel" に書き換え、その他、この辺で指定しているっぽいパッケージが入っていなかったら別途調べて入れておきます(多分途中で止まるのでその都度対処)。
あとはconfigure のオプションをお好みで追加するだけで、ビルドは進められると思います。


# rpmbuild -bp /usr/src/redhat/SPECS/httpd.spec # パッチをあてる
# rpmbuild -bc /usr/src/redhat/SPECS/httpd.spec # コンパイルを行う
# rpmbuild -bi /usr/src/redhat/SPECS/httpd.spec # インストールテスト
# rpmbuild -ba /usr/src/redhat/SPECS/httpd.spec # パッケージを作成する

ただ、最後に、


警告: Installed (but unpackaged) file(s) found:
/usr/lib/httpd/build/config.nice
/usr/lib/libapr-0.a
/usr/lib/libapr-0.la
/usr/lib/libaprutil-0.a
/usr/lib/libaprutil-0.la
/usr/share/man/man8/apachectl.8.gz
/usr/share/man/man8/httpd.8.gz
/var/www/error/README

というようなエラーが出て止まってしまうので、色々調べて、"/etc/rpm/macros" に、


%_unpackaged_files_terminate_build 0

という行を追加してエラーを無視するように。
で、無事パッケージが作成されました。こんなんでいいんだろうか。
次に入れ替え。まずは今動いているApache を止めます。


/etc/rc.d/init.d/httpd stop

Apache 本体をインストール。


rpm -Uvh httpd-2.0.50-1.i386.rpm

もともとRPM でApache を入れていた場合、以下のようなメッセージが出るので適当に編集します。


/etc/httpd/conf/httpd.conf created as /etc/httpd/conf/httpd.conf.rpmnew
/etc/logrotate.d/httpd saved as /etc/logrotate.d/httpd.rpmorig
/etc/rc.d/init.d/httpd saved as /etc/rc.d/init.d/httpd.rpmorig

httpd.conf とかの編集が終わったら、Apache を起動します。


/etc/rc.d/init.d/httpd start

普通に動いていればOK です。
(2004/07/13 00:22 追記)
素(す)のままのhttpd.spec のままではどうやらPHP のRPM ファイルのビルドで失敗しそうな気配です。なので以下のように設定を変えました。
240行あたり


$RPM_BUILD_ROOT%{_bindir}/ap?-config \
$RPM_BUILD_ROOT%{_sbindir}/{checkgid,dbmmanage,envvars*} \

の2行をコメントアウト。上手くいかなければ行まるごと、このセクションの最後に移動。
次、320行あたり


%{_bindir}/ap?-config
%{_sbindir}/envvars

の2行を新たに追加。
"/usr/bin/apr-config"、"/usr/bin/apu-config"、"/usr/sbin/envvars" の3ファイルが必要なようです。一応、暫定的な対症療法なので、また変わるかも。さらに詳しくはPHP のRPM ファイルが出来てから。
あ、そうそう、できたRPM ファイルをインストールすることなく中身を確認したい場合は以下の方法がとっても役立ちます。

コンパイルの間って暇ですよねー。というわけで攻殻SAC のDVD まとめてみながらの作業。お陰で退屈しません。