Wie finde ich die installierte Version von APR heraus?

Wie finde ich die installierte Version von APR heraus?

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.

  1. 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 wie rpm -qa | grep -i apr.
  2. 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 libaprund es sollte etwas wie „/usr/lib/libapr-1.2.3.so“ anzeigen.
  3. 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.
  4. 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/httpdund 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*.laund 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.

verwandte Informationen