O postfix não consegue encontrar uma biblioteca compartilhada MySQL

2

Estou tentando instalar o Postfix com suporte a MySQL. Quando eu inicio ou executo o daemon postfix, ele reclama que "não é possível encontrar o libmysqlclient.so.18", que está no diretório /usr/local/mysql/lib , que eu vinculei quando construí o pacote.

Eu adicionei um link simbólico para /usr/local/mysql/lib/libmysqlclient.so.18 em /usr/lib , o que resolveu o problema, mas essa é uma solução realmente desajeitada e eu prefiro fazer do jeito certo.

Eu segui esta documentação e funciona, exceto por esse pequeno erro.

Estou executando o Arch Linux, versão do kernel 2.6.33

    
por SirTasty 13.08.2011 / 21:48

2 respostas

3

A solução mais fácil seria instalar o MySQL de seu pacote Arch Linux, e então a biblioteca estaria em /usr/lib e tudo funcionaria sem problemas.

Se você estiver instalando o MySQL fora do sistema de empacotamento, então /usr/local/lib é o local esperado para as bibliotecas; coloque um link simbólico lá. Eu recomendo usar stow ou xstow para criar automaticamente links simbólicos ao instalar programas da origem; consulte Como acompanhar os programas .

Se você quiser que todos os programas procurem bibliotecas em /usr/local/mysql/lib , adicione-os ao caminho de pesquisa da biblioteca padrão em /etc/ld.so.conf . Mas eu prefiro recomendar um link simbólico em /usr/local/lib , se é isso que você quer.

Se você quiser que o Postfix procure bibliotecas em /usr/local/mysql/lib , edite o script que inicia o Postfix - algo como /etc/rc.d/postfix (não sei o local exato no Arch). Antes do daemon postfix ser iniciado, adicione a linha

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH${LD_LIBRARY_PATH:+:}/usr/local/mysql/lib"
    
por 13.08.2011 / 22:21
0

No Arch Linux, recentemente tive um problema semelhante com a instalação de bibliotecas de compilações personalizadas. No meu caso, ele instalou as bibliotecas em / usr / local / lib. A execução de um aplicativo que precisava dessa biblioteca resultou em um erro de tempo de execução semelhante: não é possível localizar a biblioteca. ( A vida não seria mais fácil em um sistema BSD? :-D)

A solução adequada é adicionar o novo diretório da biblioteca local ao caminho do vinculador de tempo de execução. No Arch Linux , isso parece ser:

/etc/ld.so.conf

Então, para adicionar seu novo caminho de biblioteca,

sudo vi /etc/ld.so.conf

adicione o caminho em uma nova linha:

/usr/local/mysql/lib/

No meu caso, meu arquivo /etc/ld.conf.so agora se parece com o abaixo, porque eu adicionei / usr / local / lib:

#
# /etc/ld.so.conf
#

include /etc/ld.so.conf.d/*.conf
/usr/local/lib

# End of file

Verifique se está correto meu uso:

sudo ldconfig -v

Suas bibliotecas personalizadas devem ser listadas, ou seja, elas são "encontradas" pelo vinculador.

Para obter mais informações sobre esse arquivo de configuração e o vinculador de tempo de execução,

man ldconfig

Parece que o Arch Linux está configurado para usar um diretório personalizado com vários arquivos de configuração (/etc/ld.so.conf.d/*.conf), mas isso é muito SYSV para mim e é um exagero completo; basta adicionar os novos caminhos para /etc/ld.so.conf.

    
por 23.09.2011 / 04:42