类似的帖子在这里:https://unix.stackexchange.com/questions/193320/yum-corrupted-on-rhel-6
在我的情况下(RHEL7.8 + Apache 2.4 + Shibboleth 3.2)我能够通过将 /usr/lib64/libldap_r-2.4.so.2 库替换为 Apache 目录中的库来解决问题:<APACHE_ROOT>/HTTPServer/openldap/lib/libldap_r-2.4.so.2
运行:
locate libldap_r-2.4.so.2
找到图书馆的位置。
就我而言,我得到了:
/app/ptc/Windchill_12.0/HTTPServer/openldap/lib/libldap_r-2.4.so.2
/app/ptc/Windchill_12.0/HTTPServer/openldap/lib/libldap_r-2.4.so.2.10.12
/usr/lib/libldap_r-2.4.so.2
/usr/lib/libldap_r-2.4.so.2.10.7
/usr/lib64/libldap_r-2.4.so.2
/usr/lib64/libldap_r-2.4.so.2.10.7
我注意到错误中使用的库位于/usr/lib64 目录中。
我替换了它,现在./apachectl -t 报告
“语法正常”
我对 Linux 的了解不够,无法解释这里发生了什么或正确的修复方法是什么。
这是我的观察并解决了这个问题,但我相信我的步骤是一个 hack。
谁有更优雅的升级证明解决方案?
参考:https://groups.google.com/g/repmgr/c/TS7QfYEoNoY
cd /usr/lib64/
ll | grep libldap
lrwxrwxrwx. 1 root root 21 Feb 11 16:42 libldap-2.4.so.2 -> libldap-2.4.so.2.10.7
-rwxr-xr-x. 1 root root 352512 Jun 6 2020 libldap-2.4.so.2.10.7
lrwxrwxrwx. 1 root root 23 Feb 11 16:42 libldap_r-2.4.so.2 -> libldap_r-2.4.so.2.10.7
-rwxr-xr-x. 1 root root 381328 Jun 6 2020 libldap_r-2.4.so.2.10.7
看起来/usr/lib64/libldap_r2.4.so.2 只是libldap_r-2.4.so.2.10.7 的符号链接。
我想知道 2.10.7 中是否缺少或已弃用的符号...
有什么方法可以区分这两个版本的区别吗?
更新
我注意到您可以在 Apache conf 中使用LoadFile 命令。
在 LoadModule mod_shib /usr/lib64/shibboleth/mod_shib_24.so 条目之前在我的 00-shib.conf 文件中添加 LoadFile <APACHE_ROOT>/HTTPServer/openldap/lib/libldap_r-2.4.so.2 即可解决问题。
这对我来说似乎仍然是一种解决方法/hack,并且库/不同版本可能存在潜在问题。