Мне нужно выяснить, какая версия 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
Вы не предоставили много информации, но есть несколько методов, которые вы можете попробовать.
- Спросите своего менеджера пакетов. Это предполагает, что у вас установлен общесистемный libapr через вашу систему управления пакетами. Debian будет
dpkg -l "*apr*"
. RPM будет примерно такимrpm -qa | grep -i apr
. - Конечно, вы могли установить его из исходников, в этом случае библиотека может иметь номер версии, закодированный в имени файла. Запустите,
locate libapr
и должно появиться что-то вроде "/usr/lib/libapr-1.2.3.so" - Может быть, это не нашло его. Попробуйте
ldd /usr/sbin/httpd
(или как там у вас APR, использующий двоичный файл), и вы увидите, какой файл библиотеки будет использовать ваш двоичный файл. Это также должно показать номер версии или покажет расположение символической ссылки на файл с номером версии в имени. - Наконец, возможно, что ваш двоичный файл имеет статически связанный 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 вам это расскажет.