
Instalé CentOS 6.3 (i386) recientemente.
Tiene dos binarios perl.
/usr/bin/perl (v5.10.1)
/usr/local/appx/perl/bin/perl (v5.8.8)
Mi pregunta: ¿Es posible instalar alguna otra funcionalidad en esa aplicación utilizando el módulo Perl y Perl de todo el sistema desde ese appx?
Como abajo:
./configue -prefix=/usrl/local/app_xyz -perl_lib_path=/usr/local/appx/perl/lib/5.8.8/
Intenté lo anterior y recibí el siguiente error:
RRD Perl Module -----------------**Not Found**
Pero ese módulo perl RRDs.pm
está disponible en el /usr/local/appx/lib/5.8.8
directorio.
Además, el configure
script no tiene ARG
que asignar nuestra ruta binaria appx perl ( /usr/local/appx/perl/bin/perl
), automáticamente selecciona el perl de todo el sistema como predeterminado.
Respuesta1
Las versiones menores de Perl 5 son compatibles con versiones anteriores, por lo que un módulo 5.8.8 debería funcionar con Perl 5.10.1 (pero hay una excepción, consulte la ADVERTENCIA a continuación). La ruta de inclusión ( @INC
) se configura cuando se compila Perl, pero @INC
puede modificarse mediante programas individuales y, de manera global, se antepone el contenido de la variable de entorno $PERL5LIB.
export PERL5LIB=/usr/local/appx/lib/5.8.8
Sin embargo, hay un problema con este enfoque. Porque $PERL5LIB esantepuestoa @INC
, al hacer esto, el directorio 5.8.8 tendrá prioridad al cargar varios módulos estándar. Eso no es deseable.
Por lo tanto, una idea menos ordenada pero, en última instancia, mejor es simplemente vincular simbólicamente /usr/local/appx/lib/5.8.8/RRD.pm
(y/o el directorio RRD, si lo hay) a /usr/local/lib/perl5
algún otro @INC
directorio estándar. Puedes ver aquellos con:
perl -e 'print "$_\n" foreach @INC'
Tenga en cuenta que puede haber un RRD.pm de nivel superior y un directorio RRD paralelo; Si es así, desea vincular ambos.
ADVERTENCIA
Algunos módulos de Perl incluyen partes compiladas desde C y pueden romperse. Si RRD.pm no usa C, entonces no tiene de qué preocuparse. Si es así, deberías copiarlo en lugar de vincularlo simbólicamente y reconstruirlo; para eso necesitas la fuente, que puede estar ahí o no :(