Parece que você ou o instalador adicionaram /usr/local/pgsql/lib64/
a /etc/ld.so.conf
ou à variável de ambiente LD_LIBRARY_PATH
. Se estiver em ld.so.conf
, remova-o e execute ldconfig
. Ditto se estiver no padrão LD_LIBRARY_PATH
- verifique /etc/environment
, os scripts de inicialização de todo o sistema, seu .bashrc
e .bash_profile
etc para ver onde ele pode ter sido adicionado.
É uma péssima ideia ter um libstdc++
incompatível no caminho de pesquisa da biblioteca. Se o instalador da Pervasive fez isso, relate um bug, é totalmente inaceitável e (como você descobriu) pode quebrar seu sistema.
Quando não estiver mais no caminho de pesquisa da sua biblioteca, tudo o mais voltará a funcionar, mas os drivers não funcionarão. Você pode fazer com que funcionem executando o programa que os utiliza com um script de wrapper que define LD_LIBRARY_PATH="/usr/local/pgsql/lib64/:${LD_LIBRARY_PATH}"
, mas apenas se esses programas não exigirem o outro libstdc++
.
Um script de wrapper pode ser tão simples quanto:
#!/bin/sh
set -e
LD_LIBRARY_PATH="/usr/local/pgsql/lib64/:${LD_LIBRARY_PATH}"
/path/to/my/program "$@"
"$@"
é uma variável "mágica" que se expande nos argumentos originais passados para o script de shell. Salve o script como, por exemplo, myprogram_wrapper.sh
, edite /path/to/my/program
para apontar para o local do executável do aplicativo que você deseja iniciar e use chmod a+x my_program_wrapper.sh
para torná-lo executável. Você pode iniciar o aplicativo com ./my_program_wrapper.sh
ou adicionar esse wrapper a atalhos da área de trabalho, etc. no lugar do aplicativo original.
É assim que muitos softwares incluídos como binários, como o Adobe Reader, se lançam em bibliotecas integradas sem afetar o resto do sistema. Não é a melhor maneira (isso é usar rpath
link), mas está tudo bem.