Apacheのアップデートに問題があります。 - mod_deflate APR_INT32_MAXが宣言されていません。

Apacheのアップデートに問題があります。 - mod_deflate APR_INT32_MAXが宣言されていません。

現在、Apacheを2.2.8から2.2.29にアップグレードしようとしていますが、問題があります。

私はmakefileを次のように設定しました。

./configure --enable-mods-shared --enable-ssl --enable-rewrite --enable-proxy-ftp --enable-proxy-http --enable-proxy-connect --enable-proxy --enable-cache --enable-mem-cache --enable-expires --enable-hea
ders --enable-deflateloca --enable-unique-id

make コマンドを実行すると、次のエラーが発生します。

/usr/local/apache2/build/libtool --silent --mode=compile gcc -g -O2 -pthread    -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE    -I/opt/vignette/software/apache/srclib/pcre -I. -I/opt/vignette/software/apache/os/unix -I/opt/vignette/software/apache/server/mpm/prefork -I/opt/vignette/software/apache/modules/http -I/opt/vignette/software/apache/modules/filters -I/opt/vignette/software/apache/modules/proxy -I/opt/vignette/software/apache/include -I/opt/vignette/software/apache/modules/generators -I/opt/vignette/software/apache/modules/mappers -I/opt/vignette/software/apache/modules/database -I/usr/local/apache2/include -I/opt/vignette/software/apache/modules/proxy/../generators -I/usr/kerberos/include -I/opt/vignette/software/apache/modules/ssl -I/opt/vignette/software/apache/modules/dav/main  -prefer-non-pic -static -c mod_deflate.c && touch mod_deflate.lo
mod_deflate.c: In function `deflate_out_filter':
mod_deflate.c:790: error: `APR_INT32_MAX' undeclared (first use in this function)
mod_deflate.c:790: error: (Each undeclared identifier is reported only once
mod_deflate.c:790: error: for each function it appears in.)
mod_deflate.c: In function `deflate_in_filter':
mod_deflate.c:1165: error: `APR_INT32_MAX' undeclared (first use in this function)
mod_deflate.c: In function `inflate_out_filter':
mod_deflate.c:1550: error: `APR_INT32_MAX' undeclared (first use in this function)
make[3]: *** [mod_deflate.lo] Error 1
make[3]: Leaving directory `/opt/vignette/software/httpd-2.2.29/modules/filters'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/opt/vignette/software/httpd-2.2.29/modules/filters'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/vignette/software/httpd-2.2.29/modules'
make: *** [all-recursive] Error 1

ここでdeflate.cの790行に移動すると、次のような内容があります。

 if (len > APR_INT32_MAX) {
            apr_bucket_split(e, APR_INT32_MAX);
            apr_bucket_read(e, &data, &len, APR_BLOCK_READ);
        }

何らかの理由でこの変数が何らかの理由で設定されていないようです。

私はRHEL4を実行していて(残念だと思います)、最近APR(Apache Runtime)とAPU(Apache Runtime Utilities)をインストールし、次のように設定しました。

/usr/local/apr/bin/apr-1-config
/usr/local/apr/bin/apu-1-config

APRスタンドアロンをインストールしてApacheに付属しているので、これが関連しているのか問題が発生しているのかわかりません。別にインストールした理由は、私がインストールした別のプログラムがバージョンが異なるためです。

収縮せずにmakefileを設定すると、バイナリが正常にコンパイルされると言います。

ベストアンサー1

数日間の努力の終わりに解決策を見つけました。

Apacheに必要なバージョンと競合する古いAPRライブラリ(<v1.3.0)がシステムにインストールされているようです。私がしたことは、httpd-2.2.29アーカイブに含まれているAPRを使用してコンパイル(および実行)したことです:./configure --with-included-apr

おすすめ記事