问题
rpm 命令发出以下错误:
rpm: error while loading shared libraries: /usr/lib64/liblzma.so.0: invalid ELF header 《 --- rpm:加载共享库/usr/lib64/liblzma.so.0时出错,ELF标头无效
on It Road.com
解决方案
在这种情况下,liblzma.so 或者指向它的链接 (/usr/lib64/liblzma.so.0) 已被覆盖。
$ rpm -qa | grep binutils rpm: error while loading shared libraries: /usr/lib64/liblzma.so.0: invalid ELF header
要解决此问题,需要恢复 liblzma.so 文件和关联的软链接。
按照下面列出的步骤来恢复 .so 文件和关联的软链接。
- 确保软链接 /usr/lib64/liblzma.so.0 存在并指向 liblzma.so.0.0.0 。
# ls -l /usr/lib64/liblzma.so.0 lrwxrwxrwx 1 root root 16 Mar 31 15:42 /usr/lib64/liblzma.so.0 -> liblzma.so.0.0.0
# file /usr/lib64/liblzma.so.0.0.0 ./usr/lib64/liblzma.so.0.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped
- 如果软链接不存在,请尝试以下操作:
尝试使用 yum 重新安装 xz-libs。
但是,如果 rpm 有问题,yum 可能也会有问题。
# yum reinstall xz-libs
- 如果这不起作用,请解压 rpm 并将新的共享库文件复制到无效文件上。
由于 rpm 有问题,解压 rpm 可能需要在不同的系统上完成。
从源存储库下载适当的 xz-libx rpm 并使用 rpm2cpio 和 cpio 命令解压 rpm。
# rpm2cpio xz-libs-4.999.9-0.5.beta.20091007git.el6.x86_64.rpm | cpio -idv ./usr/lib64/liblzma.so.0 ./usr/lib64/liblzma.so.0.0.0 ./usr/share/doc/xz-libs-4.999.9 ./usr/share/doc/xz-libs-4.999.9/COPYING.GPLv2 ./usr/share/doc/xz-libs-4.999.9/COPYING.GPLv3 ./usr/share/doc/xz-libs-4.999.9/COPYING.LGPLv2.1 421 blocks
- 将解压后的 rpm 中的 liblzma.so.0.0.0 复制到现有共享库文件上:
# cp -pv ./usr/lib64/liblzma.so.0.0.0 /usr/lib64/liblzma.so.0.0.0 cp: overwrite '/usr/lib64/liblzma.so.0.0.0'? y './usr/lib64/liblzma.so.0.0.0' -> '/usr/lib64/liblzma.so.0.0.0'
# file /usr/lib64/liblzma.so.0.0.0 /usr/lib64/liblzma.so.0.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped
- 测试 rpm 是否按预期工作。
# rpm -qf /usr/lib64/liblzma.so.0.0.0 xz-libs-4.999.9-0.5.beta.20091007git.el6.x86_64
日期:2020-09-17 00:14:10 来源:oir作者:oir