El problema
Al ejecutar el comando rpm, se ve el siguiente error:
rpm: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file
Faltan las bibliotecas de fragmentos de 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
La solución
El zlib estaba roto, normalmente zlib contiene los siguientes archivos.
En la plataforma 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
En la plataforma 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
Mientras que el zlib está roto, el comando rpm también está roto. Por lo tanto, no podemos simplemente usar el comando rpm o yum para reinstalar zlib. Lo que puedes hacer aquí es:
1. En otro servidor CentOS/RHEL, extraiga las bibliotecas compartidas zlib de un rpm con la misma versión (por ejemplo, zlib-1.2.3-27.el6 aquí).
2. Descomprimir las rpm:
# rpm2cpio zlib-1.2.3-27.el6.[arch].rpm | cpio -idvm
3. Sustituya [arch] por x86_64 o i686 según la arquitectura de su servidor:
# 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. Mueva lib.so.1.2.3 y lib.so.1 a la ubicación correcta:
En la plataforma x86_64:
# mv ./lib64/libz.so.* /lib64
En la plataforma x86:
# mv ./lib/libz.so.* /lib
5. Reconstruya la memoria caché de la biblioteca:
# ldconfig
Ahora el comando rpm debería ejecutarse con normalidad.
6. Opcionalmente, reinstale zlib para solucionar otros posibles problemas:
# yum reinstall zlib
Notas
Puede ocurrir un problema similar para otros paquetes como se menciona a continuación:
rpm: error while loading shared libraries: libdb-4.7.so: cannot open shared object file: No such file or directory
Para resolver esto, busque qué paquete proporciona el archivo faltante:
# 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
Vuelva a instalar el paquete o copie el archivo que falta extrayendo el rpm.