Apache2.4.2が起動しない
tracをfcgi経由で動作させるためにapache2.4.2をインストール。fcgiを有効にして起動しようとするとこんなエラーが。
# /usr/local/apache2/bin/apachectl restart httpd: Syntax error on line 113 of /usr/local/apache2/conf/httpd.conf: Cannot load /usr/local/apache2/modules/mod_proxy.so into server: /usr/local/apache2/modules/mod_proxy.so: undefined symbol: apr_global_mutex_lockfile
aprにライブラリが見えないとか。そういえば、aprをインストールしたときにライブラリが云々とかってメッセージが出ていたような。aprをもう一度make installして確認してみる。こんなメッセージが出ていました。
Libraries have been installed in: /usr/local/apr/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,-rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages.
ふむ、じゃあってんでやってみるけど同じエラー。なんでだろう。
落ち着いて考えてみる
Google先生に聞いても有効な答えはなし。ライブラリが見えないっていっているんだよね。libaprのライブラリ。いや、見えないんじゃなくて、シンボルが見つからないっていっているってことは、ライブラリは見えているけれどもその中に求めるシンボルがないってことか。すると、違うライブラリを参照しているってことかも。探してみる。
# cd / # find . -name '*libapr*' -print ./usr/lib64/libapr-1.so.0 ./usr/lib64/libapr-1.so.0.2.7 ./usr/lib/libapr-1.so.0.2.7 ./usr/lib/libaprutil-1.so.0.2.7 ./usr/lib/libaprutil-1.so.0 ./usr/local/apr-util/lib/libaprutil-1.a ./usr/local/apr-util/lib/libaprutil-1.so.0.4.1 ./usr/local/apr-util/lib/libaprutil-1.la ./usr/local/apr-util/lib/libaprutil-1.so ./usr/local/apr-util/lib/libaprutil-1.so.0 ./usr/local/apr/lib/libapr-1.so ./usr/local/apr/lib/libapr-1.so.0.4.6 ./usr/local/apr/lib/libapr-1.la ./usr/local/apr/lib/libapr-1.so.0 ./usr/local/apr/lib/libapr-1.a
いたいた。デフォルトで入っているaprを参照しているんだな。これを退避させる。
# mkdir /usr/lib/old # mv /usr/lib/*libpar* /usr/lib/old # mkdir /usr/lib64/old # mv /usr/lib64/*libapr* /usr/lib64/old
これで無事に起動できました。yumとソースからのインストールを並行して運用しているとこういうことがよく起きます。