Das Problem
Beim Ausführen des RPM-Befehls wird der folgende Fehler angezeigt:
rpm: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file
Die zlib-Shard-Bibliotheken fehlen:
# ls -l /lib64/libz.so* ls: /lib64/libz.so*: No such file or directory # ls -l /lib/libz.so* ls: /lib/libz.so*: No such file or directory
Die Lösung
Die zlib war defekt, normalerweise enthält zlib die folgenden Dateien.
Auf der x86_64-Plattform:
# rpm -ql zlib-1.2.3-27.el6.x86_64 /lib64/libz.so.1 /lib64/libz.so.1.2.3 /usr/share/doc/zlib-1.2.3 /usr/share/doc/zlib-1.2.3/ChangeLog /usr/share/doc/zlib-1.2.3/FAQ /usr/share/doc/zlib-1.2.3/README
Auf der x86-Plattform:
# rpm -ql zlib-1.2.3-27.el6.i686 /lib/libz.so.1 /lib/libz.so.1.2.3 /usr/share/doc/zlib-1.2.3 /usr/share/doc/zlib-1.2.3/ChangeLog /usr/share/doc/zlib-1.2.3/FAQ /usr/share/doc/zlib-1.2.3/README
Während die zlib kaputt ist, ist auch der rpm-Befehl kaputt. Wir können also nicht einfach den Befehl rpm oder yum verwenden, um die zlib neu zu installieren. Was Sie hier tun können, ist:
1. Extrahieren Sie auf einem anderen CentOS/RHEL-Server zlib-Freigabebibliotheken aus einem RPM mit derselben Version (z. B. zlib-1.2.3-27.el6 hier).
2. Dekomprimieren Sie die Drehzahl:
# rpm2cpio zlib-1.2.3-27.el6.[arch].rpm | cpio -idvm
3. Ersetzen Sie [arch] je nach Ihrer Serverarchitektur durch x86_64 oder i686:
# rpm2cpio zlib-1.2.3-27.el6.x86_64.rpm | cpio -idvm ./lib64/libz.so.1 ./lib64/libz.so.1.2.3 ./usr/share/doc/zlib-1.2.3 ./usr/share/doc/zlib-1.2.3/ChangeLog ./usr/share/doc/zlib-1.2.3/FAQ ./usr/share/doc/zlib-1.2.3/README 300 blocks
4. Verschieben Sie die lib.so.1.2.3 und lib.so.1 an den richtigen Ort:
Auf der x86_64-Plattform:
# mv ./lib64/libz.so.* /lib64
Auf x86-Plattform:
# mv ./lib/libz.so.* /lib
5. Erstellen Sie den Bibliothekscache neu:
# ldconfig
Jetzt sollte der RPM-Befehl normal laufen.
6. Installieren Sie optional die zlib neu, um andere mögliche Probleme zu beheben:
# yum reinstall zlib
Notizen
Ähnliche Probleme können bei anderen Paketen auftreten, wie unten erwähnt:
rpm: error while loading shared libraries: libdb-4.7.so: cannot open shared object file: No such file or directory
Um dies zu beheben, finden Sie heraus, welches Paket die fehlende Datei bereitstellt:
# yum provides */libdb* Loaded plugins: security, ulninfo db4-4.7.25-19.el6_6.i686 : The Berkeley DB database library (version 4) for C Repo : ol6_latest_local Matched from: Filename : /usr/lib/libdb-4.7.so Filename : /lib/libdb-4.7.so
Installieren Sie das Paket neu oder kopieren Sie die fehlende Datei, indem Sie die RPM extrahieren.