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

관련 정보