Il problema
I comandi rpm generano il seguente errore:
rpm: error while loading shared libraries: /usr/lib64/liblzma.so.0: invalid ELF header
La soluzione
In questo caso, liblzma.so o il collegamento ad esso (/usr/lib64/liblzma.so.0) sono stati sovrascritti.
$ rpm -qa | grep binutils rpm: error while loading shared libraries: /usr/lib64/liblzma.so.0: invalid ELF header
Per risolvere questo problema, è necessario ripristinare il file liblzma.so e il collegamento software associato. Segui i passaggi descritti di seguito per ripristinare il file .so e i collegamenti software associati.
1. Assicurati che il softlink /usr/lib64/liblzma.so.0 esiste e punta a 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. Se il softlink non esiste, provare quanto segue:
– Prova a usare yum per reinstallare xz-libs. Tuttavia, se rpm ha un problema, probabilmente lo farà anche yum.
# yum reinstall xz-libs
3. Se ciò non funziona, decomprimere rpm e copiare il nuovo file di libreria condivisa sul file non valido. Poiché rpm ha problemi, è probabile che la decompressione di rpm debba essere eseguita su un sistema diverso.
– Scarica il rpm xz-libx appropriato dal repository di origine e usa i comandi rpm2cpio e cpio per decomprimere il 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. Copiare liblzma.so.0.0.0 da rpm decompresso sul file della libreria condivisa esistente:
# 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. Verifica che rpm funzioni come previsto.
# rpm -qf /usr/lib64/liblzma.so.0.0.0 xz-libs-4.999.9-0.5.beta.20091007git.el6.x86_64