由于某种原因,所有(或很多)共享库都不再加载。但是,ldconfig 声称该库存在。
web6:~ # sendmail -?
sendmail: error while loading shared libraries: libdb-4.8.so: cannot open shared object file: No such file or directory
web6:~ # ldconfig -v | grep libdb-4.8
libdb-4.8.so -> libdb-4.8.so
web6:~ # sendmail -?
sendmail: error while loading shared libraries: libdb-4.8.so: cannot open shared object file: No such file or directory
web6:~ # zypper -?
zypper: error while loading shared libraries: libmodman.so.1: cannot open shared object file: No such file or directory
web6:~ # rpm -qa | grep libdb-
libdb-4_8-4.8.30-17.1.4.x86_64
libdb-4_8-32bit-4.8.30-17.1.4.x86_64
web6:~ #
对于可能发生的情况有什么建议吗?
这会影响很多程序,尽管 Apache2 仍然正常。当用户说联系表单不再通过电子邮件发送提交内容时,我发现了这一点。
LD_DEBUG=libs sendmail -?
1927: find library=libresolv.so.2 [0]; searching
1927: search cache=/etc/ld.so.cache
1927: trying file=/lib64/libresolv.so.2
1927:
1927: find library=libnsl.so.1 [0]; searching
1927: search cache=/etc/ld.so.cache
1927: trying file=/lib64/libnsl.so.1
1927:
1927: find library=libcrypt.so.1 [0]; searching
1927: search cache=/etc/ld.so.cache
1927: trying file=/lib64/libcrypt.so.1
1927:
1927: find library=libm.so.6 [0]; searching
1927: search cache=/etc/ld.so.cache
1927: trying file=/lib64/libm.so.6
1927:
1927: find library=libdb-4.8.so [0]; searching
1927: search cache=/etc/ld.so.cache
1927: search path=/lib64/tls/x86_64:/lib64/tls:/lib64/x86_64:/lib64:/usr/lib64/tls/x86_64:/usr/lib64/tls:/usr/lib64/x86_64:/usr/lib64 (system search path)
1927: trying file=/lib64/tls/x86_64/libdb-4.8.so
1927: trying file=/lib64/tls/libdb-4.8.so
1927: trying file=/lib64/x86_64/libdb-4.8.so
1927: trying file=/lib64/libdb-4.8.so
1927: trying file=/usr/lib64/tls/x86_64/libdb-4.8.so
1927: trying file=/usr/lib64/tls/libdb-4.8.so
1927: trying file=/usr/lib64/x86_64/libdb-4.8.so
1927: trying file=/usr/lib64/libdb-4.8.so
1927:
sendmail: error while loading shared libraries: libdb-4.8.so: cannot open shared object file: No such file or directory
答案1
关键在于:
sendmail: error while loading shared libraries: libdb-4.8.so: cannot open shared object file: No such file or directory
您的libdb-4.8.so
丢失了。这可能是升级失败或磁盘损坏的结果。您应该重新安装其包含的软件包(对于您的情况,我使用了scout
或某些rpm
命令来找出它属于哪个软件包,然后重新安装该软件包)。
您的其他库可能是正确的 - 只有当一个库依赖于另一个库(这次是 libdb),并且这个依赖关系已损坏,那么它也不会加载。
如果您的系统上确实有很多丢失或损坏的库,则可能无法启动。
如果确实不行(例如某些 rpm 或安装脚本也需要某个缺失的库),您也可以手动将其复制回去。当然,在这种情况下您也应该定期重新安装该软件包,这种修补解决方案仅作为临时解决方案有效。