Acabei de instalar o Arch e configurar minha conexão sem fio. Eu queria instalar pacotes adicionais, então tentei usar o pacman.
Mas com cada comando que uso recebo o seguinte erro:
pacman: erro ao carregar bibliotecas compartilhadas: libcurl.so.4: não é possível abrir o arquivo de objeto compartilhado: esse arquivo ou biblioteca não existe.
Mas em /usr/local/lib eu tenho os seguintes arquivos/pastas:
libcurl.a libcurl.a libcurl.so libcurl.so.4 libcurl.so.4.2.o pkgconfig
Então, como aponto o pacman para esses arquivos?
Responder1
Não sei por que seus libcurl.*
arquivos estão em /usr/local/lib
, mas os meus estão /usr/lib
onde deveriam estar. Para confirmar ldconfig
que não os está encontrando, use
ldconfig -p | grep curl
Não deve imprimir nada, se aparecer, verifique o número da versão, você pode ter obtido a versão errada.
Para corrigir isso, você precisa informar ldconfig
onde encontrar as bibliotecas. Você pode colocar um link simbólico /usr/lib
nos arquivos apropriados /usr/local/lib
ou pode ldconfig
pesquisar diretamente lá:
echo /usr/local/lib | sudo tee -a /etc/ld.so.conf.d/local.conf
Em seguida, execute sudo ldconfig
para atualizar o cache.
E talvez tente descobrir por que suas bibliotecas estão no diretório errado.
Responder2
Você precisa descobrir onde ele está procurando libcurl
(e não encontrando), pois obviamente não está verificando /usr/local/lib
. Primeiro, recomendo executar ldd nele para ver se alguma outra biblioteca está faltando:
ldd $(which pacman)
Espero que você tenha strace
instalado, pois essa será sua próxima ferramenta para descobrir onde está procurando libcurl
os arquivos.
strace -e open -o strace.log $(which pacman)
Depois de executar isso, less strace.log
veja quais arquivos ele tentou abrir, e isso o ajudará a determinar onde ele está procurando. Uma solução rápida e suja seria copiar (ou vincular simbolicamente) os arquivos apropriados de /usr/local/lib
onde estão procurando.
Aqui está o que obtive quando fiz o strace 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)