Geralmente, se você está tentando executar algo de um pacote (ou seja, binários pré-compilados), você pode definir PATH
e / ou LD_LIBRARY_PATH
ou usar chrpath
para ajustar os próprios binários. Se você for cuidadoso, não há motivo para não ter muitas versões do BerkeleyDB instaladas. (O script configure
está configurado para tornar isso fácil e suporta --program-suffix
(e transformar) para que você possa manter mais facilmente os binários com versão em seu PATH.)
No entanto, o ASSP é implementado no perl, portanto, ele usará a biblioteca perl BerkeleyDB.so
compilada atual, que será vinculada ao Berkeley em que foi construída. (Ao contrário de muitos pacotes que usam DB::File
, o assp usa BerkeleyDB
diretamente.)
Você pode ver qual biblioteca o perl está usando com algo como:
perl -e 'print join "\n",@INC;' | xargs -i find {} -name BerkeleyDB.so
execute ldd
no (s) módulo (s) encontrado (s).
Normalmente, ao usar o CentOS, você compra no mundo centrado em pacotes do CentOS (quer você goste ou não), então as soluções "corretas" são encontrar um pacote ASSP que combine com sua versão do CentOS, ou um Berkeley RPM que também inclui um perl de trabalho BerkeleyDB.so
ou atualiza o CentOS.
Evito implantar serviços no CentOS devido a problemas de dependência de pacotes. Eu construo a partir da fonte, mas isso é "old school". (Leitores gentis que podem experimentar efeitos deletérios quando o software é instalado, a não ser através de RPMs, devem ter parado de ler acima da linha.)
Para corrigir isso manualmente, você pode instalar uma versão paralela do perl apenas para ASSP (uma possível dor de cabeça de manutenção, embora da última vez que verifiquei o CentOS 5.x veio com o perl-5.8 que não executará o ASSP. feito isso); ou você pode atualizar apenas o seu módulo BerkelyDB seguindo as instruções no README e verificar / definir os caminhos corretos em config.in
antes de compilar. Este módulo é incluído no arquivo de origem BerkeleyDB.4.5, os padrões são:
INCLUDE=/usr/local/BerkeleyDB/include
LIB=/usr/local/BerkeleyDB/lib
Portanto, basta adicionar um link simbólico /usr/local/BerkeleyDB
→ /usr/local/BerkeleyDB.4.5
e construir manualmente (ou usar o CPAN para instalá-lo / atualizá-lo, o CPAN será o mais recente, ele tem suporte para praticamente qualquer versão do bdb subjacente).
Se você atualizar o BerkeleyDB, correrá um pequeno risco de alguns outros scripts perl terem problemas se contarem com ele ou com uma versão específica dele. Este não é um módulo comumente instalado, tanto quanto eu posso dizer, não está incluído nos pacotes Perl normais ou Berkeley db4 CentOS (está em perl-BerkelyDB
no RHEL, nunca o viu no CentOS 5.x).
cd /usr/local/src/db-4.5.x # or where ever you build
cd perl/BerkeleyDB
vi config.in # check INCLUDE and LIB [optional]
perl Makefile.pl # select the correct perl
make
make test && make install
Em seguida, repita as instruções find
/ ldd
acima para confirmar que tudo está conforme o esperado. (Se você tem mais de um perl, geralmente é uma boa idéia exportar a variável de ambiente PERL
antes de iniciar, mas não acho que seja necessário aqui.)