2011-01-21 21 views
5

Estoy ejecutando CentOS 5.4, que solo tiene la versión 5.8 de Perl disponible de forma predeterminada, y tengo un programa que requiere Perl 5.10, así que compilé Perl 5.10 en CentOS. ¿Cómo especifico con qué perl quiero ejecutar el programa porque el comando perl usa 5.8 de forma predeterminada?Cómo especificar qué versión de Perl usar en CentOS

+2

Tenga cuidado de no vencer a su proveedor/Perl distribuido por distro con una versión más nueva. A veces, las herramientas del sistema se escriben para la versión con la que vinieron y puede causar problemas de dependencia. – Nathan

Respuesta

5

La primera línea del archivo de programa debe hacer referencia al binario perl que desea utilizar: p.

#!/usr/bin/perl 

También es posible que desee cambiar la variable PATH para que el directorio de su Perl 5.10 binario en el se aparece antes del directorio de binarios 5.8. p.

export PATH=/path/to/perl/5.10:$PATH 
0

configure la variable de entorno PATH para que apunte a su nuevo ejecutable perl. Por ejemplo

export PATH=/newpath/perl:$PATH 
2

me gusta hacer enlaces simbólicos a mis diferentes ejecutables de Perl en /usr/local/bin:

$ [sudo] ln -s /path/to/perl5.10.1.exe /usr/local/bin/perl510 
$ [sudo] ln -s /path/to/perl5.13.8.exe /usr/local/bin/perl513 
$ ... etc. ... 
$ # and just for completeness 
$ ln -s /usr/bin/perl /usr/local/bin/perl58 

y luego simplemente invocar:

$ perl510 script_to_use_with_v5.10.pl 
1

hay una herramienta llamada alternativas que era diseñado para tratar con eficacia exactamente este tipo de problema. Básicamente, le ofrece una forma fácil de cambiar entre diferentes versiones de aplicaciones mediante la manipulación de enlaces simbólicos, como p. Ej. tus directorios bin

Di "alternativas hombre" en un terminal (o alternativas de instalación yum, si no lo tienes instalado).

13

Agrego mi voz para recomendar no meterme con el perl del sistema.

Nadie mencionó App::perlbrew todavía. Le permite tener varias versiones de Perl y cambiar entre ellas fácilmente. Esto puede hacerse manualmente, por supuesto, pero es mucho más fácil tener esta herramienta para hacerlo por usted; Del Pod-

# Install some Perls 
perlbrew install perl-5.12.2 
perlbrew install perl-5.8.1 
perlbrew install perl-5.13.6 

# See what were installed 
perlbrew list 

# Switch perl in the $PATH 
perlbrew switch perl-5.12.2 
perl -v 

# Switch to another version 
perlbrew switch perl-5.8.1 
perl -v 

# Switch to a certain perl executable not managed by perlbrew. 
perlbrew switch /usr/bin/perl 

# Or turn it off completely. Useful when you messed up too deep. 
perlbrew off 

# Use 'switch' command to turn it back on. 
perlbrew switch perl-5.12.2 
+1

Usar perlbrew para enganchar en 5.10 no funcionará bien con Apache, especialmente si está usando mod_perl.Puede ejecutar una secuencia de comandos lanzada por Apache a través de perlbrew, pero no es muy eficiente. El método más eficiente será a través de mod_perl hooks, pero luego perlbrew no va a ayudar. Hacer una instalación paralela de 5.10 será mejor y actualizar Apache/mod_perl para usar la instalación 5.10 v. El sistema 5.8. –

0

Por cierto, el paquete perlbrew está disponible para su instalación desde el repositorio para CentOS 5.x EPEL Traté de instalar solo este rpm inicialmente pero tiene varias dependencias, así que opté por agregar el repositorio EPEL a mi lista de repositorios yum en mi caja.

0

solución tiene dos partes ... primera edición myscript.pl cual quiere versión específica

old 
#!/usr/bin/perl 

new 
#!/usr/bin/env perl 

anteriormente tiene ningún impacto sobre las ejecuciones normales de la secuencia de comandos ... cuando se desea por encima de myscript.pl utilizar una perl versión específica crear un guión envoltorio que contiene

export PATH=/cool/new/version/perl:$PATH 
# now execute script on following line 
/path/to/myscript.pl 

de esta manera otras invocaciones de la secuencia de comandos permanecen sin cambios y sólo tiene que utilizar por defecto, mientras que perl script de envoltorio lanzador ejecuta mismo guión myscript.pl con la versión de perl elegido

Cuestiones relacionadas