Ich muss herausfinden, welche Version der Apache Portable Runtime auf einem bestimmten Server installiert ist.
Wie kann ich dies also tun, ohne Zugriff auf die Protokolldateien zu haben?
Antwort1
Schreiben Sie eine Zeile in C:
# cat apr.c
int main(void) {
printf("%s\n",apr_version_string());
}
Kompilieren (den richtigen Pfad zu Ihrer Libapr finden)
# gcc -o apr apr.c /usr/pkg/lib/libapr-1.a
ausführen
# ./apr
1.3.3
PS: Um libapr zu finden, können Sie versuchen
ls /usr/lib/libapr*; ls /usr/local/lib/libapr*;ls /lib/libapr*;locate libapr; ...
oder führen Sie ldd über httpd aus, wie David sagt, wenn Sie die von Apache verwendete Version herausfinden möchten
Antwort2
Sie geben nicht viele Informationen an, aber es gibt mehrere Methoden, die Sie ausprobieren könnten.
- Fragen Sie Ihren Paketmanager. Dies setzt voraus, dass Sie über Ihr Paketverwaltungssystem eine systemweite libapr installiert haben. Debian wäre
dpkg -l "*apr*"
. RPM wäre so etwas wierpm -qa | grep -i apr
. - Natürlich haben Sie es möglicherweise aus der Quelle installiert. In diesem Fall ist die Versionsnummer der Bibliothek möglicherweise im Dateinamen codiert. Führen Sie es aus
locate libapr
und es sollte etwas wie „/usr/lib/libapr-1.2.3.so“ anzeigen. - Vielleicht hat es das nicht gefunden. Versuchen Sie es
ldd /usr/sbin/httpd
(oder was auch immer Ihre APR-Binärdatei ist) und Sie werden sehen, welche Bibliotheksdatei Ihre Binärdatei verwenden wird. Dies sollte auch die Versionsnummer anzeigen oder den Speicherort eines Symlinks zu der Datei mit einer Versionsnummer im Namen. - Schließlich ist es möglich, dass Ihre Binärdatei APR statisch verknüpft hat. Sie können feststellen, ob ldd oben APR nicht in der Liste hatte. Sie können möglicherweise eine Versionsnummer erhalten, indem Sie ausführen
strings /usr/sbin/httpd
und nach einer Versionsnummer suchen, die wahrscheinlich aussieht. Sie können dies auch tun, wenn Sie keine .so-Datei mit der darin codierten Versionsnummer haben.
Antwort3
$ find / -name *apr* 2>/dev/null 1>/tmp/apr-findings
$ less /tmp/apr-findings
Das hat mir geholfen, weil es so schlecht dokumentiert war. Ich kenne keine schönere Lösung.
Wenn Sie eine Datei mit dem Namen finden libapr*.la
und ihre Versionsnummer nicht herausfinden können, schauen Sie nach. In meinem Fall sieht es ungefähr so aus:
# Version information for libapr-0.
current=9
age=9
revision=4
Antwort4
Wenn Sie nur herausfinden möchten, welche Version mit Apache verknüpft ist, erfahren Sie es mit /usr/local/apache2/bin/httpd -V.