问题

rpm 命令发出以下错误:

rpm: error while loading shared libraries: /usr/lib64/liblzma.so.0: invalid ELF header
《 --- rpm:加载共享库/usr/lib64/liblzma.so.0时出错,ELF标头无效
rpm: error while loading shared libraries, invalid ELF header
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 文件和关联的软链接。

  1. 确保软链接 /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
  1. 如果软链接不存在,请尝试以下操作:

尝试使用 yum 重新安装 xz-libs。
但是,如果 rpm 有问题,yum 可能也会有问题。

# yum reinstall xz-libs
  1. 如果这不起作用,请解压 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
  1. 将解压后的 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
  1. 测试 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