3 versões do BerkelyDB instaladas

3 versões do BerkelyDB instaladas

Tenho 3 versões do BerkelyDB instaladas no meu servidor

seguindo 2 versões

Package db4-4.3.29-10.el5_5.2.x86_64 
Package db4-4.3.29-10.el5_5.2.i386 

que estão incluídos na Distro Centos 5

e uma terceira versão instalada a partir da fonte localizada aqui

/usr/local/BerkeleyDB.4.5

(e todos os utilitários Berkeley instalados aqui /usr/local/BerkeleyDB.4.5/bin )

Quando executo um programa que usa Berkeley (estou usando ASSP 2.4.4), ele pode ver e usar BerkeleyDB 4.3.29 . Isso é ruim porque o ASSP precisa da versão Berkeley >= 4.5 .

Como posso definir como padrão BerkeleyDB.4.5 instalado em /usr/local/BerkeleyDB.4.5 em vez de 4.3.29 ?

Responder1

Geralmente, se você está tentando executar algo de um pacote (ou seja, binários pré-compilados), você pode definir PATHe/ou LD_LIBRARY_PATH, ou usar chrpathpara ajustar os próprios binários. Se você for cuidadoso, não há razão para não poder ter muitas versões do BerkeleyDB instaladas. (O configurescript é configurado para facilitar isso e oferece suporte --program-suffix(e transformação) para que você possa manter binários versionados com mais facilidade em seu PATH.)

No entanto, o ASSP é implementado em perl, portanto, ele usará a BerkeleyDB.sobiblioteca perl compilada atual, que será vinculada a qualquer Berkeley em que foi construída. (Ao contrário de muitos pacotes que usam DB::File, o assp usa BerkeleyDBdiretamente.)

Você pode verqual biblioteca perl está usandocom algo como:

perl -e 'print join "\n",@INC;' | xargs -i find {} -name BerkeleyDB.so

em seguida, execute lddnos módulos encontrados.

Normalmente, ao usar o CentOS, você entra no mundo centrado no pacote do CentOS (goste ou não), então as soluções "corretas" são encontrar um pacote ASSP que corresponda à sua versão do CentOS ou um Berkeley RPM que também inclua um pacote funcional perl BerkeleyDB.soou atualize o CentOS.


Evito implantar serviços no CentOSpor causa deproblemas de dependência de pacote. Eu construo a partir do código-fonte, mas isso é "old school". (Leitores gentis que podem experimentar efeitos deletérios quando o software é instalado de outra forma que não via RPMs deveriam 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 perl-5.8 que não executa ASSP, então você já deve ter feito isso) ; ou você pode atualizar apenas seu módulo BerkelyDB seguindo as instruções noLeia-mee verifique/defina os caminhos corretos config.inantes de compilar. Este módulo está incluído no arquivo fonte BerkeleyDB.4.5, os padrões são:

INCLUDE=/usr/local/BerkeleyDB/include
LIB=/usr/local/BerkeleyDB/lib

Então, basta adicionar um link simbólico /usr/local/BerkeleyDB/usr/local/BerkeleyDB.4.5e construir manualmente (ou usar o CPAN para instalá-lo/atualizá-lo, o CPAN será o mais recente, mas tem suporte para praticamente qualquer versão bdb subjacente).

Se você atualizar o BerkeleyDB, você corre um pequeno risco de alguns outros scripts Perl terem problemas se dependerem dele ou de uma versão específica dele. Este não é um módulo comumente instalado, até onde eu sei, ele não está incluído nos pacotes Perl normais ou Berkeley db4 CentOS (está no perl-BerkelyDBRHEL, nunca o vi 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/ lddacima para confirmar que tudo está conforme o esperado. (Se você tiver mais de um perl, geralmente é uma boa ideia exportar a variável de ambiente PERLantes de começar, mas não acho que seja necessário aqui.)

informação relacionada