perl cygwin environment-variables strawberry-perl

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



environment-variables strawberry-perl (8)

No tengo mi máquina cygwin cerca, así que no puedo probar esto, pero tal vez puedas colocar un script en el front-end del comando perl: ve a / bin debajo de cygwin y mueve el archivo perl.exe a otra cosa como perl- org.exe, luego configure un script de shell que ejecute su otro perl con los mismos argumentos.

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


Si elimina Perl de cygwin utilizando el programa de instalación, usará Strawberry Perl por defecto.

Si no puede eliminar Perl de cygwin, puede crear un enlace simbólico al ejecutable Perl de 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 lo tiene instalado en otro lugar.

Verifique que el enlace esté funcionando correctamente al verificar 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 .


Puede cambiar su RUTA para poner primero los directorios de Strawberry. Strawberry intenta ser amable poniendo 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. Simplemente me sucedió esta semana y solía sucederme en mi Mac hasta que dejé de jugar con la configuración del sistema e instalé mi propio material completamente separado.


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 e instalación explícita de Perl, en lugar de confiar en lo que está en / usr / bin.


Tengo dos scripts que utilizo para modificar la primera línea de scripts de Perl a lo que Perl sea el primero en mi camino: rightperl hardcodes 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 bajo Cygwin (y desde un shell Unix en general).


Una buena cosa que puedo agregar es que si obtiene el perl correcto para ser el primero en la ruta, debe manejar los módulos de CPAN específicos del sitio que pueda haber instalado con el perl de fresa ejecutándose en un shell de CMD.

"que perl" es tu amigo.

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

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

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


Si no quieres perder el tiempo con ningún camino o hacer algo permanente, existe un truco TEMPORAL fácil. Escriba "where perl" en el indicador de Cygwin sh. Enumerará todos los Perl.exe que ve en PATH en su orden de ejecución. Cambia los nombres de los que no quieres que se vean antes del perl que quieres usar. Pero recuerde cambiarlos cuando haya terminado o puede tener algunos problemas en el futuro.


Muchas de estas son buenas soluciones, pero prefiero 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 archivo .bashrc desde su shell, (o inicie un nuevo shell) y ejecute su programa.

source ~/.bashrc perl script.pl