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/lib
donde se supone que deben estar. Para confirmar ldconfig
que 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 ldconfig
dónde encontrar las bibliotecas. Puede colocar un enlace simbólico /usr/lib
a los archivos apropiados en /usr/local/lib
, o puede indicarle ldconfig
que busque allí directamente:
echo /usr/local/lib | sudo tee -a /etc/ld.so.conf.d/local.conf
Luego ejecute sudo ldconfig
para 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 strace
instalado, porque esa será tu próxima herramienta para saber dónde busca libcurl
archivos.
strace -e open -o strace.log $(which pacman)
Después de ejecutar esto, less strace.log
vea 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/lib
donde 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)