如何找出已安装的 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; ...

或者按照 david 的说法,通过 httpd 运行 ldd,如果你想找到 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 会告诉您。

相关内容