3 versiones de BerkeleyDB instaladas

3 versiones de BerkeleyDB instaladas

Tengo 3 versiones de BerkelyDB instaladas en mi servidor

siguientes 2 versiones

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

que están incluidos en la distribución Centos 5

y una tercera versión instalada desde la fuente ubicada aquí

/usr/local/BerkeleyDB.4.5

(y toda la utilidad Berkeley instalada aquí /usr/local/BerkeleyDB.4.5/bin )

Cuando ejecuto un programa que usa Berkeley (estoy usando ASSP 2.4.4), puedo ver y usar BerkeleyDB 4.3.29. Esto es malo porque ASSP necesita la versión Berkeley >= 4.5.

¿Cómo puedo configurar BerkeleyDB.4.5 como predeterminado instalado en /usr/local/BerkeleyDB.4.5 en lugar de 4.3.29?

Respuesta1

Generalmente, si está intentando ejecutar algo desde un paquete (es decir, archivos binarios precompilados), puede configurar PATHy/ LD_LIBRARY_PATHo usar chrpathpara modificar los archivos binarios. Si tiene cuidado, no hay razón para que no pueda tener instaladas muchas versiones de BerkeleyDB. (El configurescript está configurado para facilitar esto y admite --program-suffix(y transforma) para que pueda mantener más fácilmente los archivos binarios versionados en su RUTA.)

Sin embargo, ASSP está implementado en Perl, por lo que utilizará la BerkeleyDB.sobiblioteca de Perl compilada actual que se vinculará con cualquier Berkeley en el que se haya construido. (A diferencia de muchos paquetes que usan DB::File, assp lo usa BerkeleyDBdirectamente).

Puedes ver¿Qué biblioteca está usando Perl?con algo como:

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

luego ejecute ldden los módulos encontrados.

Normalmente, cuando usa CentOS, acepta el mundo centrado en los paquetes de CentOS (le guste o no), por lo que las soluciones "correctas" son encontrar un paquete ASSP que coincida con su versión de CentOS, o un RPM de Berkeley que también incluya un perl BerkeleyDB.soo actualizar CentOS.


Evito implementar servicios en CentOSporqueProblemas de dependencia del paquete. Construyo desde la fuente, pero eso es la "vieja escuela". (Los lectores amables que puedan experimentar efectos nocivos cuando se instala software que no sea mediante RPM deberían haber dejado de leer encima de la línea).

Para solucionar este problema manualmente, puede instalar una versión paralela de Perl solo para ASSP (un posible problema de mantenimiento, aunque la última vez que revisé CentOS 5.x venía con perl-5.8 que no ejecuta ASSP, por lo que es posible que ya lo haya hecho) ; o puede actualizar solo su módulo BerkeleyDB siguiendo las instrucciones en elLÉAMEy verifique/establezca las rutas correctas config.inantes de compilar. Este módulo está incluido en el archivo fuente BerkeleyDB.4.5, los valores predeterminados son:

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

Así que simplemente agregue un enlace simbólico /usr/local/BerkeleyDB/usr/local/BerkeleyDB.4.5y compílelo manualmente (o use CPAN para instalarlo/actualizarlo, aunque el CPAN será el más reciente, tiene soporte para casi cualquier versión subyacente de bdb).

Si actualiza BerkeleyDB, corre un pequeño riesgo de que otros scripts de Perl tengan problemas si dependen de él o de una versión específica del mismo. Este no es un módulo comúnmente instalado, hasta donde yo sé, no está incluido ni en los paquetes normales de Perl ni en Berkeley db4 CentOS (está en perl-BerkelyDBRHEL, nunca lo he visto en 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

Luego repita las instrucciones find/ lddanteriores para confirmar que todo está como se esperaba. (Si tiene más de un Perl, suele ser una buena idea exportar la variable de entorno PERLantes de comenzar, pero no creo que sea necesario aquí).

información relacionada