Arch: no puedo usar pacman: error al cargar bibliotecas compartidas

Arch: no puedo usar pacman: error al cargar bibliotecas compartidas

Acabo de terminar de instalar Arch y configurar mi conexión inalámbrica. Quería instalar paquetes adicionales así que intenté usar pacman.

Pero con cada comando que uso me sale el siguiente error:

pacman: error al cargar bibliotecas compartidas: libcurl.so.4: no se puede abrir el archivo objeto compartido: no existe tal archivo o biblioteca.

Pero en /usr/local/lib tengo los siguientes archivos/carpetas:

libcurl.a libcurl.a libcurl.so libcurl.so.4 libcurl.so.4.2.o pkgconfig

Entonces, ¿cómo apunto a Pacman a estos archivos?

Respuesta1

No estoy seguro de por qué tus libcurl.*archivos están en /usr/local/lib, pero los míos están /usr/libdonde se supone que deben estar. Para confirmar ldconfigque no los encuentra, use

ldconfig -p | grep curl

No debería imprimir nada, si lo hace, verifique el número de versión, es posible que haya obtenido la versión incorrecta.

Para rectificar esto, debe indicar ldconfigdónde encontrar las bibliotecas. Puede colocar un enlace simbólico /usr/liba los archivos apropiados en /usr/local/lib, o puede indicarle ldconfigque busque allí directamente:

echo /usr/local/lib | sudo tee -a /etc/ld.so.conf.d/local.conf

Luego ejecute sudo ldconfigpara actualizar el caché.

Y tal vez intente descubrir por qué sus bibliotecas están en el directorio incorrecto.

Respuesta2

Necesita averiguar dónde está buscando libcurl(y no encontrándolo), ya que obviamente no está comprobando /usr/local/lib. Primero, recomiendo ejecutar ldd para ver si faltan otras bibliotecas:

ldd $(which pacman)

Espero que lo hayas straceinstalado, porque esa será tu próxima herramienta para saber dónde busca libcurlarchivos.

strace  -e open -o strace.log $(which pacman)

Después de ejecutar esto, less strace.logvea qué archivos intentó abrir, y esto le ayudará a determinar dónde los está buscando. Una solución rápida y sucia sería copiar (o vincular simbólicamente) los archivos apropiados desde /usr/local/libdonde los está buscando.

Esto es lo que obtuve cuando hice un seguimiento wget:

open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libssl.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libcrypto.so.1.0.0", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/x86_64-linux-gnu/libidn.so.11", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/librt.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC) = 3
open("/lib/x86_64-linux-gnu/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
open("/etc/wgetrc", O_RDONLY)           = 3
open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3
open("/usr/share/locale/\"en_US/LC_MESSAGES/wget.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/\"en/LC_MESSAGES/wget.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/\"en_US/LC_MESSAGES/wget.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/\"en/LC_MESSAGES/wget.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/en\"/LC_MESSAGES/wget.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale-langpack/en\"/LC_MESSAGES/wget.mo", O_RDONLY) = -1 ENOENT (No such file or directory)

información relacionada