Problém
Příkazy rpm vydávají následující chybu:
rpm: error while loading shared libraries: /usr/lib64/liblzma.so.0: invalid ELF header
Řešení
V tomto případě došlo k přepsání buď liblzma.so nebo odkazu na něj (/usr/lib64/liblzma.so.0).
$ rpm -qa | grep binutils rpm: error while loading shared libraries: /usr/lib64/liblzma.so.0: invalid ELF header
Chcete-li tento problém vyřešit, je třeba obnovit soubor liblzma.so a související měkký odkaz. Chcete-li obnovit soubor .so a související softwarové odkazy, postupujte podle kroků uvedených níže.
1. Ujistěte se, že softwarový odkaz /usr/lib64/liblzma.so.0 existuje a odkazuje na 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
2. Pokud softlink neexistuje, zkuste následující:
– Zkuste použít yum k přeinstalaci xz-libs. Pokud však má problém s otáčkami za minutu, pravděpodobně bude mít i yum.
# yum reinstall xz-libs
3. Pokud to nefunguje, rozbalte rpm a zkopírujte nový soubor sdílené knihovny přes neplatný soubor. Vzhledem k tomu, že rpm má potíže, rozbalení rpm bude pravděpodobně nutné provést na jiném systému.
– Stáhněte si příslušné xz-libx rpm ze zdrojového úložiště a pomocí příkazů rpm2cpio a cpio rozbalte 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
4. Zkopírujte soubor liblzma.so.0.0.0 z rozbaleného rpm přes existující soubor sdílené knihovny:
# 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
5. Otestujte, zda otáčky za minutu fungují podle očekávání.
# rpm -qf /usr/lib64/liblzma.so.0.0.0 xz-libs-4.999.9-0.5.beta.20091007git.el6.x86_64