Как узнать установленную версию 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

PS: чтобы найти libapr, вы можете попробовать

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

или запустите ldd поверх httpd, как говорит Дэвид, если вы хотите узнать версию, используемую Apache

решение2

Вы не предоставили много информации, но есть несколько методов, которые вы можете попробовать.

  1. Спросите своего менеджера пакетов. Это предполагает, что у вас установлен общесистемный libapr через вашу систему управления пакетами. Debian будет 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 вам это расскажет.

Связанный контент