Durante los últimos días, he estado probando exhaustivamente PIP y Pipenv herramientas en mi sistema Arch Linux. Mientras probaba estas herramientas, tuve que reinstalar y degradar los paquetes Python2.x, Python 3.x y algunos otros paquetes de dependencias de Python muchas veces. En algún momento, se rompió mi Arch Linux y pacman dejó de funcionar. Cada vez que ejecuto pacman, recibo un error que dice "pacman:error al cargar bibliotecas compartidas:libidn2.so.0:no se puede abrir el archivo de objeto compartido:no existe tal archivo o directorio" .
pacman:error al cargar bibliotecas compartidas:libidn2.so.0:no se puede abrir el archivo de objeto compartido:no existe tal archivo o directorio
No solo pacman, algunas otras aplicaciones, como pacaur, yaourt, packer, virtualbox y transmisión, etc., también dejaron de funcionar. Cuando trato de abrir cualquiera de estas aplicaciones, sigo recibiendo este mensaje:"error al cargar bibliotecas compartidas:libidn2.so.0:no se puede abrir el archivo de objeto compartido". Lo más probable es que haya desinstalado algo que no podía recordar. Para mi mala suerte, era mi sistema personal y no quiero reinstalarlo porque tiene muchas aplicaciones. Por lo tanto, reinstalar el sistema operativo y todas las aplicaciones puede demorar dos o más días. Después de buscar vigorosamente en la wiki de Arch Linux y otros foros de Linux como un loco, finalmente logré solucionarlo. Si alguna vez se encuentra con un problema como este, no busque en ninguna parte, simplemente descargue el archivo fuente y copie los archivos que faltan en /usr/lib/ carpeta. Por lo que busqué en la web, este método parece muy fácil hasta ahora. Siga leyendo para saber cómo solucioné este error.
Corregir el error "pacman:error al cargar bibliotecas compartidas" en Arch Linux
Como ya dije, seguía recibiendo este error:"pacman:error al cargar bibliotecas compartidas:libidn2.so.0:no se puede abrir el archivo de objeto compartido:no existe tal archivo o directorio" cuando ejecuto el comando pacman o cualquier asistente de AUR como pacaur, packer, yaourt e incluso no puedo abrir la aplicación VirtualBox y el cliente de transmisión. Entonces, el problema real aquí es el archivo "libidn2.so.0" ha desaparecido. ¡Tenemos que averiguarlo!
$ ls -la /usr/lib/libidn*
Salida de muestra de mi sistema Arch Linux:
lrwxrwxrwx 1 root root 22 Jul 22 2013 /usr/lib/libidnkitlite.so -> libidnkitlite.so.1.0.2 lrwxrwxrwx 1 root root 22 Jul 22 2013 /usr/lib/libidnkitlite.so.1 -> libidnkitlite.so.1.0.2 -rw-r--r-- 1 root root 276352 Jul 22 2013 /usr/lib/libidnkitlite.so.1.0.2 lrwxrwxrwx 1 root root 18 Jul 22 2013 /usr/lib/libidnkit.so -> libidnkit.so.1.0.2 lrwxrwxrwx 1 root root 18 Jul 22 2013 /usr/lib/libidnkit.so.1 -> libidnkit.so.1.0.2 -rw-r--r-- 1 root root 282368 Jul 22 2013 /usr/lib/libidnkit.so.1.0.2 lrwxrwxrwx 1 root root 17 Aug 15 19:00 /usr/lib/libidn.so -> libidn.so.11.6.16 lrwxrwxrwx 1 root root 17 Aug 15 19:00 /usr/lib/libidn.so.11 -> libidn.so.11.6.16 -rwxr-xr-x 1 root root 210872 Aug 15 19:00 /usr/lib/libidn.so.11.6.16
Tenía "libidn.so", pero no puedo encontrar "libidn2.so.0". Dado que pacman y cualquier otro administrador de paquetes no funcionaron, no hay forma de instalar, actualizar o degradar ningún paquete del repositorio oficial o caché local. Entonces, pensé que la única forma podría ser descargar el paquete que tiene el archivo faltante de Internet, extraerlo y finalmente copiar los archivos faltantes en el directorio /usr/lib/. Déjame crear un directorio para guardar el archivo tar de libdin2:
$ mkdir libidn
$ cd libidn
Busque y descargue la última versión de este paquete. Una búsqueda rápida en Google me trajo aquí . Extraiga el archivo:
$ tar xf libidn2-2.0.4-2-x86_64.pkg.tar.xz
El comando anterior extrajo el contenido del archivo en un directorio llamado "usr". Vaya a la carpeta usr/lib:(Nota - Es usr/lib , no /usr/lib )
$ cd usr/lib
Finalmente copie el archivo que falta, en nuestro caso es libidn2.so.0 , al directorio /usr/lib/ de su sistema Arch Linux.
$ sudo cp libidn2.so.0 /usr/lib/
Luego, ejecuté:
$ sudo pacman -syu
Actualizar Arch Linux
¡Voila! ¡Pacman funciona ahora! ¡Ups! Oh no, espera... No funcionó. Recibí este error después de unos minutos.
[....] (511/511) checking keys in keyring [######################] 100% (511/511) checking package integrity [######################] 100% (511/511) loading package files [######################] 100% (511/511) checking for file conflicts [######################] 100% error: failed to commit transaction (conflicting files) libidn2: /usr/lib/libidn2.so.0 exists in filesystem Errors occurred, no packages were upgraded.
Para arreglar esto, ejecuté:
$ sudo pacman -S libidn2 --force
Luego, intenté actualizar de nuevo:
$ sudo pacman -Syu
¡¡Reparado!! Todo bien ahora. Entonces, si alguna vez se encuentran con un problema como "error al cargar bibliotecas compartidas:... no se puede abrir el archivo de objeto compartido:no existe tal archivo o directorio" , una forma de arreglar esto es encontrar el paquete que contiene los archivos que faltan, descargar la última versión de ese paquete, extraerlo y copiar los archivos que faltan en /usr/lib/ directorio. Por supuesto, podría haber muchas maneras de solucionar este tipo de problemas. Pero esta es la única solución funcional que pude encontrar y la encuentro mucho más fácil y rápida. Este truco también podría funcionar en otras distribuciones de Linux.
Lectura relacionada:
- Cómo restaurar Broken Arch Linux al estado de funcionamiento anterior
- Cómo solucionar el error "no se puede bloquear la base de datos" en Arch Linux
- Cómo solucionar el error "paquete no válido o dañado (firma PGP)" en Arch Linux
- Cómo resolver el problema "Iniciando la actualización completa del sistema... no hay nada que hacer" en Arch Linux
- Cómo resolver el "error:no se pudo confirmar la transacción (archivos en conflicto)" en Arch Linux