Arch: não é possível usar o pacman: erro ao carregar bibliotecas compartilhadas

Arch: não é possível usar o pacman: erro ao carregar bibliotecas compartilhadas

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/libonde deveriam estar. Para confirmar ldconfigque 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 ldconfigonde encontrar as bibliotecas. Você pode colocar um link simbólico /usr/libnos arquivos apropriados /usr/local/libou pode ldconfigpesquisar diretamente lá:

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

Em seguida, execute sudo ldconfigpara 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 straceinstalado, pois essa será sua próxima ferramenta para descobrir onde está procurando libcurlos arquivos.

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

Depois de executar isso, less strace.logveja 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/libonde 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)

informação relacionada