web-dev-qa-db-ja.com

Apacheの更新の問題-mod_deflateAPR_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 Utility)をインストールし、次の場所で構成していることに注意してください。

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

これらが関連しているかどうか、またはAPRを個別にインストールしていて、Apacheに付属しているため、問題が発生しているかどうかはわかりません。別々にインストールする理由は、インストールした別のプログラムが別のバージョンに依存しているためです。

Deflateせずにmakefileを構成すると、バイナリは正常にコンパイルされます。

1

これを理解しようとして数日後、ここに解決策があります。

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

0