Problém
Při provádění příkazu rpm se zobrazí následující chyba:
rpm: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file
Chybí knihovny fragmentů zlib:
# 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
Řešení
Zlib byl poškozen, zlib normálně obsahuje následující soubory.
Na platformě x86_64:
# 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
Na platformě x86:
# 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
Zatímco je zlib přerušen, je přerušen i příkaz rpm. Nemůžeme tedy jednoduše použít příkaz rpm nebo yum k přeinstalaci zlib. Co můžete udělat zde:
1. Na jiném serveru CentOS/RHEL extrahujte sdílené knihovny zlib z rpm se stejnou verzí (např. zde zlib-1.2.3-27.el6).
2. Dekomprimujte otáčky:
# rpm2cpio zlib-1.2.3-27.el6.[arch].rpm | cpio -idvm
3. Nahraďte [arch] x86_64 nebo i686 v závislosti na architektuře vašeho serveru:
# 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. Přesuňte soubory lib.so.1.2.3 a lib.so.1 do správného umístění:
Na platformě x86_64:
# mv ./lib64/libz.so.* /lib64
Na platformě x86:
# mv ./lib/libz.so.* /lib
5. Znovu vytvořte mezipaměť knihovny:
# ldconfig
Nyní by měl příkaz rpm běžet jako obvykle.
6. Případně přeinstalujte zlib, abyste opravili další možné problémy:
# yum reinstall zlib
Poznámky
Podobný problém může nastat u dalších balíčků, jak je uvedeno níže:
rpm: error while loading shared libraries: libdb-4.7.so: cannot open shared object file: No such file or directory
Chcete-li tento problém vyřešit, zjistěte, který balíček obsahuje chybějící soubor:
# 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
Znovu nainstalujte balíček nebo zkopírujte chybějící soubor a extrahujte rpm.
-
Udělat chybu při instalaci LiME na CentOS – lib/modules/kernel_version/build:Žádný takový soubor nebo adresář [Vyřešeno]
-
Jak opravit chybu instalace Pythonu při načítání sdílených knihoven:libssl.so.1.0.0? [vyřešeno]
-
libstdc++.so.5:nelze otevřít soubor sdíleného objektu - ale knihovna je nainstalovaná a aktuální