处理多个丢失的共享对象的一般策略是什么?

处理多个丢失的共享对象的一般策略是什么?

我仍在学习 Linux,所以请耐心等待...

我在 Apache 的 httpd 上运行了 ldd,发现许多共享库丢失。我是这台机器的新手,不确定其中一些是放错了位置还是真的丢失了。我最好的猜测是有人安装了较新版本的 httpd,它需要较新版本的共享库,但它找不到这些共享库。例如,我可以通过执行“locate libmm”在机器的其他位置找到其中一些库。但是,我不知道要将其链接到哪个版本。

举个例子: 以下内容应该链接到什么?

libssl.so.2 => not found

我在我的计算机上没有发现 libssl.so.2 但是我发现...

/lib/.libssl.so.0.9.8e.hmac
/lib/.libssl.so.6.hmac
/lib/libssl.so.0.9.8e
/lib/libssl.so.6
/lib64/.libssl.so.0.9.8e.hmac
/lib64/.libssl.so.6.hmac
/lib64/libssl.so.0.9.8e
/lib64/libssl.so.6
/usr/lib/libssl3.so
/usr/lib64/libssl3.so

如果我没有要链接的文件,那么如何在线找到正确的软件包来安装它?例如,如果我使用yum search mm,则很难确定要安装哪个包以及哪个包包含正确的共享库。

有没有更简单的方法重新安装 Apache?

这是 ldd 的输出。

$ ldd ../bin/httpd

libaprutil-1.so.0 => .../apache/2.2.24.rhas5.x86_64/lib/libaprutil-1.so.0 (0x00002ae571b0c000)
libapr-1.so.0 => .../apache/2.2.24.rhas5.x86_64/lib/libapr-1.so.0 (0x00002ae571d2f000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x0000003fd7c00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ae571f68000)
libmm.so.14 => not found
libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00002ae572183000)
libm.so.6 => /lib64/libm.so.6 (0x0000003fd8000000)
libpcre.so.0 => /lib64/libpcre.so.0 (0x0000003fd7000000)
libcurl.so.4 => not found
libidn.so.11 => /usr/lib64/libidn.so.11 (0x00002ae5724c2000)
libldap-2.4.so.2 => not found
librt.so.1 => /lib64/librt.so.1 (0x0000003fd8800000)
libcrypto.so.1.0.0 => not found
libdl.so.2 => /lib64/libdl.so.2 (0x00002ae5726f4000)
libz.so.1 => /usr/lib64/libz.so.1 (0x0000003fd8400000)
libexpat.so.1 => not found
libssl.so.1.0.0 => not found
libc.so.6 => /lib64/libc.so.6 (0x0000003fd6c00000)
/lib64/ld-linux-x86-64.so.2 (0x0000003fd6800000)
libmm.so.14 => not found
libcurl.so.4 => not found
libssl.so.1.0.0 => not found
libexpat.so.1 => not found
libmm.so.14 => not found
libcurl.so.4 => not found
libexpat.so.1 => not found
libssl.so.1.0.0 => not found

答案1

您是从软件包中安装的吗?我只需执行yum install httpd,它应该会处理依赖关系。

如果你真的想找到这些东西,你可以尝试rpm查找,并在那里搜索提供/需要的东西。但这会花费很多时间。

相关内容