¿Cómo puedo modificar mi entorno cygwin para usar Strawberry Perl en lugar de la distribución de Perl empaquetada?

StackOverflow https://stackoverflow.com/questions/463947

Pregunta

Actualmente uso Strawberry Perl como mi distribución principal de Perl. Sin embargo, tengo algunas aplicaciones que hacen llamadas de Perl a través de cygwin. En general, estos fallan porque llaman a la versión de Perl que se empaquetó con cygwin y solo buscan en las carpetas lib de cygwin. ¿Cómo puedo modificar mi entorno cygwin para llamar a Strawberry Perl (y usar los directorios C: / strawberry / perl / lib) en su lugar?

¿Fue útil?

Solución

Si elimina Perl de cygwin utilizando el programa de instalación, utilizará Strawberry Perl de forma predeterminada.

Si no puede eliminar Perl de cygwin, puede crear un enlace simbólico al ejecutable de Perl desde Strawberry.

Desde un shell cygwin, use el siguiente conjunto de comandos:

$ mv /usr/bin/perl /usr/bin/perl-cygwin
$ ln -s /cygdrive/c/strawberry/perl/bin/perl.exe /usr/bin/perl

Esto supone que utilizó el instalador predeterminado de Strawberry Perl. Actualice su ubicación perl.exe en consecuencia si la tiene instalada en otro lugar.

Verifique para asegurarse de que el enlace funciona correctamente verificando la versión de Perl:

$ perl -v

Debería decir Esto es perl, (versión) construido para MSWin32-x86-multi-thread (o similar) y no construido para cygwin-thread -multi-64int .

Otros consejos

Puede cambiar su RUTA para poner los directorios de Fresa primero. Strawberry trata de ser amable colocando sus directorios al final de la RUTA. Sin embargo, si instaló desde el archivo .zip, no cambió la RUTA en absoluto.

Podría mover / usr / bin / perl, pero esa es una mala idea, ya que se rompe cuando cygwin intenta actualizar lo que cree que es su perl. Acabo de pasarme eso esta semana y solía pasarme en mi Mac hasta que dejé de jugar con la configuración del sistema e instalé mis propias cosas completamente separadas.

Una cosa buena que puedo agregar es que si obtiene el perl correcto para ser el primero en el camino, debe manejar los módulos CPAN específicos del sitio que puede haber instalado con el perl de fresa que se ejecuta en un shell CMD.

" que perl " es tu amigo.

Si tuvo problemas con esto, podría establecer la variable de entorno PERL5LIB, pero no debería ser necesario.

Todavía paso las rutas de archivo de estilo DOS como parámetros en el script perl, es decir, "d: \ data \ myfile.txt", no "/cygdrive/d/data/myfile.txt" ;. Por extraño que parezca, esta combinación de notación de ruta funciona:

bash > /cygdrive/d/scripts/myscript.pl d: \ data \ myfile.txt

Muchas de estas son buenas soluciones, pero prefiero tomar una fácil que no tengo que modificar más de una vez.

Todo lo que necesita hacer es agregar / modificar una línea en su archivo .bashrc.

# Prepend strawberry perl to cygwin's path
export PATH=/cygdrive/C/Tools/Perl/perl/bin:$PATH

fuente .bashrc desde su shell (o inicie un nuevo shell) y ejecute su programa.

source ~/.bashrc
perl script.pl 

Probablemente esta no sea una solución preferida, ¡pero debería poder modificar el #! línea:

#!/cygdrive/c/strawberry/perl/bin/perl5.10.0

Siempre me refiero a una ubicación explícita e instalación de perl, en lugar de confiar en lo que está en / usr / bin.

Tengo dos secuencias de comandos que utilizo para modificar la primera línea de secuencias de comandos de Perl a la que Perl esté primero en mi camino: rightperl codifica al Perl que está primero en mi $ PATH ahora , envperl cambiará la línea a #! / usr / bin / env perl, por lo que el Perl a usar solo se selecciona en el momento en que se invoca el script. Funciona muy bien con Cygwin (y desde un shell de Unix en general).

Si no quieres perder el tiempo con ninguna ruta o hacer algo permanente, hay un pirateo TEMPORAL fácil . Escriba " donde perl " en Cygwin sh prompt. Enumerará todos los Perl.exe que ve en PATH en su orden de ejecución. Cambie los nombres de los que no desea que aparezcan en la lista antes del perl que desea usar. Pero recuerde cambiarlos de nuevo cuando haya terminado o podría tener algunos problemas en el futuro.

No tengo mi máquina cygwin cerca, así que no puedo probar esto, pero tal vez pueda ejecutar el comando perl con un script: vaya a / bin debajo de cygwin y mueva el perl.exe allí a otra cosa como perl-org.exe, luego configure un script de shell que ejecute su otro perl con los mismos argumentos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top