どうも Redhat Linux9 httpd-2.0.40 + JK2 + Jakarta Tomcat 4.1.27 でInternal error が発生するので、LinuxのhttpdかJK2をリビルドしようと思って、ちょっと調べてみた。
まずは、Redhat Linux9 の httpd がどういうオプションでコンパイルされているかを調べるために、RedhatのダウンロードサイトからhttpdのSRPMファイルを手に入れる。
これをインストール(rpm -i *.rpm)すると、/usr/src/redhat/SPECS に specファイルができあがるので、それを開いて確認。
../configure -C \ –prefix=%{_sysconfdir}/httpd \ –exec-prefix=%{_prefix} \ –bindir=%{_bindir} \ –sbindir=%{_sbindir} \ –mandir=%{_mandir} \ –libdir=%{_libdir} \ –sysconfdir=%{_sysconfdir}/httpd/conf \ –includedir=%{_includedir}/httpd \ –libexecdir=%{_libdir}/httpd/modules \ –datadir=%{contentdir} \ –with-mpm=$mpm \ –enable-suexec –with-suexec \ –with-suexec-caller=%{suexec_caller} \ –with-suexec-docroot=%{contentdir} \ –with-suexec-logfile=%{_localstatedir}/log/httpd/suexec.log \ –with-suexec-bin=%{_sbindir}/suexec \ –with-suexec-uidmin=500 –with-suexec-gidmin=500 \ $* |
rpm -bb httpd.spec で構築ができるはずなので、実際のオプションが何かわかるはずなのだが、-bはunknown option といわれて構築できない。なぜ?
rpm のバージョンが 3.0.6 では使えることがわかった。4.xでは駄目なんではないだろうか。しかし、manでは相変わらず使えるような感じで書いてある。–testはヘルプで表示されるのに、これも使えない。なぜ?
回答はこちらにありました。
RPMのリビルドで「unknown option」エラーが表示される
rpmbuildコマンドを使うのが正解のようです。
# rpmbuild -bc httpd.spec |
こうやって確認をすると、次のようになっているのがわかりました。これをJK2をbuildするときの参考にするのがよさそうです。
../configure -C –prefix=/etc/httpd –exec-prefix=/usr –bindir=/usr/bin –sbindir=/usr/sbin –mandir=/usr/share/man –libdir=/usr/lib –sysconfdir=/etc/httpd/conf –includedir=/usr/include/httpd –libexecdir=/usr/lib/httpd/modules –datadir=/var/www –with-mpm=prefork –enable-suexec –with-suexec –with-suexec-caller=apache –with-suexec-docroot=/var/www –with-suexec-logfile=/var/log/httpd/suexec.log –with-suexec-bin=/usr/sbin/suexec –with-suexec-uidmin=500 –with-suexec-gidmin=500 –enable-mods-shared=all –enable-ssl –with-ssl –enable-deflate –enable-cgid –enable-proxy –enable-proxy-connect –enable-proxy-http –enable-proxy-ftp |
ちなみに、httpdのソースは、 /usr/src/redhat/SOURCES/httpd-2.0.40 になります。また、buildした結果は /usr/src/redhat/BUILD/httpd-2.0.40 にはいります。