2009-02-26 6 views
5

Quiero configurar Perl 5.10 en mi directorio personal además del Perl antiguo actualmente en la máquina en/usr/local. No soy un superusuario en esta máquina.¿Puedo instalar un paquete binario Perl preconfigurado en mi directorio personal?

Encontré el paquete binario require 5.10 HPUX perl y parece funcionar, pero por alguna razón parece asumir que se está ejecutando en/usr/local (como lo demuestran los mensajes de error @INC). ¿Hay alguna otra variable además de PERLLIB, como PERLHOME o algo que deba establecer para que Perl no busque nada en los directorios/usr/local?

P.S. He visto advice online para compilar y configurar el directorio en el paso ./Configure, pero he tenido dificultades para compilar cosas en este cuadro anterior, así que preferiría usar el Perl precompilado ya que parece funcionar principalmente.


ACTUALIZACIÓN - León respondió esto, así que básicamente no es posible ejecutar binario Perl correctamente desde su directorio personal a menos que se compiló con esto en mente

Respuesta

4

Depende de si es o no su perl binario es reubicable Es una opción de tiempo de compilación. ¿Cuál es el resultado de este comando? ¿Está definido o no?

perl -V:userelocatableinc 
+0

perl -V: userelocatableinc userelocatableinc = 'undef'; –

+0

Entonces estás de suerte. Tendrás que compilarlo tú mismo. –

+0

¿Eso significa que no funcionará? Entonces, sus respuestas son básicamente que no hay forma de poner este binario en mi directorio de inicio ya que esa variable no se configuró cuando alguien la compiló. Digamos que sí, ¿cómo funcionaría entonces? –

-1

Puede apuntar a cualquier ruta intérprete que desea en la primera línea:

!#/my/local/perl 

Y si usted no está buscando portabilidad a través de las máquinas, se puede establecer manualmente @INC en el script. Creo que también hay una forma de obtenerlo del env, que podría ser más portátil.

+0

Hay algunas rutas predeterminadas codificadas en el binario si no se compilaron con las opciones que Leon especifica anteriormente. –

4

No te va a gustar esta respuesta.

Perl almacena @INC como cadenas en su código binario. Antes de que hubiera userelocatableinc, la técnica para reubicar Perl era hacer una búsqueda y reemplazar en el binario, así como cambiarlos en Config.pm. Así es como ActiveState envió un Perl reubicable.

Las cadenas tienen que permanecer del mismo tamaño que antes, rellenando cualquier espacio adicional con bytes nulos. ActiveState solucionaría esto configurando Perl con un prefijo como "/ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTMPPATHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" o algo así. También lo hizo realmente inequívoco para encontrar en el binario. No tienes tanta suerte, por lo que solo funcionará si las rutas actuales son más cortas que las rutas con las que deseas reemplazarlas.

Pero eso es demasiado complicado. Simplemente compile Perl para usted mismo ya sea usando la fuente de HP/UX o simplemente tome la fuente regular de perl.org. Perl tiene un desarrollador de HP/UX dedicado, por lo que todo debe ir sin problemas.

+0

Gracias por la información adicional acerca de activestate, etc., así que compilé Perl desde cero y funciona, sin embargo, todavía tengo problemas con @INC de PAR, por lo que pronto tendré una nueva pregunta. Gracias –

Cuestiones relacionadas