問題
rpm コマンドは次のエラーを発行します:
rpm: error while loading shared libraries: /usr/lib64/liblzma.so.0: invalid ELF header
解決策
この例では、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
2. ソフトリンクが存在しない場合は、以下を試してください:
– yum を使用して xz-libs を再インストールしてみてください。ただし、rpm に問題がある場合は、yum にも問題がある可能性があります。
# yum reinstall xz-libs
3. それでも問題が解決しない場合は、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
4. 解凍した 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
5. rpm が期待どおりに機能することをテストします。
# rpm -qf /usr/lib64/liblzma.so.0.0.0 xz-libs-4.999.9-0.5.beta.20091007git.el6.x86_64