2012年2月20日月曜日

apache(httpd-2.2.22)のビルドでundefined reference to `apr_array_clear'

新しいサーバを作って、httpd-2.2.22をいつも通りrpmbuildしていたら以下のエラー。

/usr/lib64/apr-1/build/libtool --silent --mode=link gcc -pthread   -pie  -L/usr/kerberos/lib64   -o httpd  modules.lo buildmark.o -export-dynamic server/libmain.la modules/http/libmod_http.la modules/mappers/libmod_so.la server/mpm/prefork/libprefork.la os/unix/libos.la -lm -lpcre /usr/lib64/libaprutil-1.la -lldap -llber -ldb-4.3 -lexpat /usr/lib64/libapr-1.la -lpthread -ldl
modules/http/.libs/libmod_http.a(byterange_filter.o): In function `ap_set_byterange':

byterange_filter.c:(.text+0x130d): undefined reference to `apr_array_clear'
collect2: ld returned 1 exit status

make[1]: *** [httpd] Error 1
make[1]: Leaving directory `/usr/src/redhat/BUILD/httpd-2.2.22/prefork'
make: *** [all-recursive] Error 1
エラー: /var/tmp/rpm-tmp.2174 の不正な終了ステータス (%build)


RPM ビルドエラー:
    /var/tmp/rpm-tmp.2174 の不正な終了ステータス (%build)

どうもインストールされているapr-devel-1.2.7だと定義が不足しているようなので、aprの最新版をダウンロードしてきてインストール。apr-develとapr-util-develのバージョンは指定されてないのに。

うまくいったと思ったら、今度は別のエラー。

RPM ビルドエラー:
    ファイルが見つかりません (by glob): /var/tmp/httpd-2.2.22-1-root/usr/share/man/man8/ab*
    ファイルが見つかりません (by glob): /var/tmp/httpd-2.2.22-1-root/usr/share/man/man8/logresolve*
    ファイルが見つかりません (by glob): /var/tmp/httpd-2.2.22-1-root/usr/share/man/man8/apxs.8*

どうもspecファイルのバグっぽい。先ほどの件といい、2.2.22のspecファイルは微妙かも。
でもrpmで管理したいので結局2.2.21をビルドしてインストールすることに。なんだかなあ。

ちなみにCentOS5.7の64bit環境です。