erro ao carregar bibliotecas compartilhadas: libmysqlclient.so.20: não é possível abrir o arquivo de objeto compartilhado: Nenhum arquivo ou diretório

0

Então, estou executando um programa que uma faculdade escreveu no debian. Quando faço isso, surge o seguinte erro:

error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory 

Eu tentei instalar os seguintes pacotes por causa dos resultados de pesquisa diferentes que fiz:

apt-get install libmariadbclient-dev-compat
apt-get install default-libmysqlclient-dev
apt-get install mysql-common

Pesquisas como:

find .  -name 'libmysqlclient*' 
locate libmysqlclient.so

Não recebe nada como saída.

Eu encontrei uma suposta correção usando o yum mas como estou usando o debian não é uma solução para mim. Eu encontrei o .20 é algo sobre o Oracle MySQL 5.7 ( link )

Alguém sabe como resolver o problema? Agradecemos antecipadamente.

    
por Agustin Barrachina 27.09.2018 / 12:07

2 respostas

0

Aparentemente, o programa foi compilado contra uma versão do MySQL baixada de www.mysql.com; O libmysqlclient.so.20 não estava disponível no Debian.

Você pode baixar um .deb do link que configura seu sistema Debian (baseado em) para acessar o repositório apt www.mysql.com. Você pode então atualizar os dados do apt:

# apt-get update

e instale a biblioteca correta:

# apt-get install libmysqlclient20

Note que isto provavelmente irá querer remover sua versão Debian do MySQL, se instalado! Então, considere cuidadosamente o que você quer.

Uma alternativa é navegar pelo repositório apt e baixar apenas o libmysqlclient20 .deb manualmente. Desembale isso, por exemplo:

# dpkg-deb --extract libmysqlclient20_5.7.23-1debian9_amd64.deb /tmp/libmysqlclient20

Você pode então copiar o libmysqlclient.so.20 para algum lugar que tenha pesquisado por bibliotecas compartilhadas, por exemplo / usr / local / lib / e deve funcionar.

    
por 27.09.2018 / 14:17
0

Como alternativa à solução correta do wurtel, um método hacky inseguro, sujo e não adequado para produção é simplesmente criar um link simbólico de uma versão próxima o suficiente para o arquivo que o programa está procurando:

  ln -s /usr/lib/libmysqulclient.so.23 /usr/local/lib/libmysqlclient.so.20

Pode funcionar ou não. Na maioria das vezes, se o arquivo de origem é apenas um pouco mais recente, ele deve estar bem. É claro que reitero que isso é inseguro e apenas para testes.

    
por 27.09.2018 / 15:07

Tags