설치된 APR 버전을 확인하는 방법은 무엇입니까?

설치된 APR 버전을 확인하는 방법은 무엇입니까?

특정 서버에 설치된 Apache Portable Runtime 버전을 확인해야 합니다.

그러면 로그 파일에 액세스하지 않고 어떻게 이 작업을 수행할 수 있습니까?

답변1

C의 한 줄을 작성합니다.

# cat apr.c
int main(void) {
        printf("%s\n",apr_version_string());
}

컴파일(libapr에 대한 좋은 경로 찾기)

# gcc -o apr apr.c /usr/pkg/lib/libapr-1.a

실행하다

# ./apr
1.3.3

추신: libapr을 찾으려면 시도해 볼 수 있습니다.

ls /usr/lib/libapr*; ls /usr/local/lib/libapr*;ls /lib/libapr*;locate libapr; ...

또는 apache에서 사용하는 버전을 찾으려면 david가 말한 대로 httpd를 통해 ldd를 실행하세요.

답변2

많은 정보를 제공하지는 않지만 시도해 볼 수 있는 몇 가지 방법이 있습니다.

  1. 패키지 관리자에게 문의하세요. 이는 패키지 관리 시스템을 통해 시스템 전체에 libapr이 설치되어 있다고 가정합니다. 데비안은 dpkg -l "*apr*". RPM은 rpm -qa | grep -i apr.
  2. 물론 소스에서 설치했을 수도 있습니다. 이 경우 라이브러리의 파일 이름에 버전 번호가 인코딩되어 있을 수 있습니다. 실행 locate libapr하면 "/usr/lib/libapr-1.2.3.so"와 같은 내용이 표시됩니다.
  3. 어쩌면 찾지 못했을 수도 있습니다. 시도해 보면 ldd /usr/sbin/httpd(또는 바이너리를 사용하는 APR이 무엇이든) 바이너리가 사용할 라이브러리 파일이 무엇인지 확인할 수 있습니다. 버전 번호도 표시되어야 하며, 이름에 버전 번호가 있는 파일에 대한 심볼릭 링크 위치도 표시됩니다.
  4. 마지막으로 바이너리에 APR이 정적으로 링크되어 있을 가능성이 있습니다. 위의 ldd에 목록에 APR이 없는지 알 수 있습니다. 실행 strings /usr/sbin/httpd하고 가능성이 있는 버전 번호를 검색하여 버전 번호를 얻을 수 있습니다 . 버전 번호가 인코딩된 .so 파일이 없는 경우에도 이 작업을 수행할 수 있습니다.

답변3

$ find / -name *apr* 2>/dev/null 1>/tmp/apr-findings
$ less /tmp/apr-findings

문서화 상태가 너무 좋지 않았기 때문에 이것이 도움이 되었습니다. 나는 더 좋은 해결책을 모른다.
이름이 지정된 파일을 찾았 libapr*.la으나 버전 번호를 알 수 없는 경우 해당 파일을 살펴보세요. 내 경우에는 다음과 같습니다.

# Version information for libapr-0.
current=9
age=9
revision=4

답변4

Apache와 연결된 버전을 찾으려는 경우 /usr/local/apache2/bin/httpd -V가 알려줍니다.

관련 정보