Instalei o CentOS 6.3 (i386) recentemente.
Tem dois binários perl
/usr/bin/perl (v5.10.1)
/usr/local/appx/perl/bin/perl (v5.8.8)
Minha pergunta: É possível instalar alguma outra funcionalidade para esse aplicativo usando o módulo Perl e Perl em todo o sistema desse appx?
Como abaixo:
./configue -prefix=/usrl/local/app_xyz -perl_lib_path=/usr/local/appx/perl/lib/5.8.8/
Eu tentei o acima, recebi o seguinte erro:
RRD Perl Module -----------------**Not Found**
Mas esse módulo perl RRDs.pm
está disponível no /usr/local/appx/lib/5.8.8
diretório.
Além disso, o configure
script não precisa ARG
mapear nosso caminho binário appx perl ( /usr/local/appx/perl/bin/perl
), ele escolhe automaticamente o perl de todo o sistema como padrão.
Responder1
As versões secundárias do Perl 5 são compatíveis com versões anteriores, portanto, um módulo 5.8.8 deve funcionar com um perl 5.10.1 (mas há uma exceção, consulte CAVEAT abaixo). O caminho de inclusão ( @INC
) é configurado quando o perl é construído, mas @INC
pode ser modificado por programas individuais, e globalmente o conteúdo da variável de ambiente $PERL5LIB é anexado.
export PERL5LIB=/usr/local/appx/lib/5.8.8
No entanto, há um problema com esta abordagem. Porque $PERL5LIB éanexadopara @INC
, isso fará com que o diretório 5.8.8 tenha precedência ao carregar vários módulos padrão. Isso não é desejável.
Portanto, uma ideia menos organizada, mas melhor, é apenas criar um link simbólico /usr/local/appx/lib/5.8.8/RRD.pm
(e/ou o diretório RRD, se houver) para /usr/local/lib/perl5
algum outro @INC
diretório padrão. Você pode ver aqueles com:
perl -e 'print "$_\n" foreach @INC'
Observe que pode haver um diretório RRD.pm de nível superior e um diretório RRD paralelo; se assim for, você deseja criar um link simbólico para ambos.
EMBARGO
Alguns módulos Perl incluem partes que são compiladas a partir de C e podem quebrar. Se RRD.pm não usar C, você não precisa se preocupar. Se isso acontecer, você deve copiá-lo em vez de criar um link simbólico e reconstruí-lo; para isso você precisa da fonte, que pode ou não estar lá :(