Comment modifier mon environnement cygwin pour utiliser Strawberry Perl au lieu de la distribution Perl empaquetée?

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

Question

J'utilise actuellement Strawberry Perl comme ma distribution Perl principale. Cependant, certaines applications permettent de passer des appels Perl via cygwin. Ils échouent généralement car ils appellent la version de Perl fournie avec cygwin et ne recherchent que les dossiers lib de cygwin. Comment modifier mon environnement cygwin pour appeler Strawberry Perl (et utiliser plutôt les répertoires C: / strawberry / perl / lib)?

Était-ce utile?

La solution

Si vous supprimez Perl de cygwin à l'aide du programme d'installation, Strawberry Perl sera utilisé par défaut.

Si vous ne parvenez pas à supprimer Perl de cygwin, vous pouvez créer un lien symbolique vers l'exécutable Perl depuis Strawberry.

À partir d'un shell cygwin, utilisez le jeu de commandes suivant:

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

Cela suppose que vous avez utilisé le programme d’installation par défaut de Strawberry Perl. Mettez à jour votre emplacement perl.exe en conséquence si vous l'avez installé ailleurs.

Assurez-vous que le lien fonctionne correctement en vérifiant la version de Perl:

$ perl -v

Cela devrait dire Ceci est perl, (version) construit pour MSWin32-x86-multi-thread (ou similaire) et pas construit pour cygwin-thread -multi-64int .

Autres conseils

Vous pouvez modifier votre PATH pour placer les répertoires Strawberry en premier. Strawberry essaie d'être gentil en mettant ses répertoires à la fin du PATH. Si vous avez installé à partir du fichier .zip, le chemin PATH n’a pas du tout été modifié.

Vous pouvez déplacer / usr / bin / perl, mais c’est une mauvaise idée, car il se brise lorsque cygwin essaie de mettre à jour ce qu’il pense être son perl. C'est ce qui m'est arrivé cette semaine et ce qui m'arrivait sur mon Mac jusqu'à ce que je cesse de jouer avec la configuration du système et que j'installe mes propres fichiers complètement à part.

Une bonne chose que je peux ajouter est que si vous obtenez le bon perl à venir en premier dans le chemin, il devrait gérer les modules CPAN spécifiques au site que vous avez peut-être installés avec perl fraise s'exécutant dans un shell CMD.

"quel perl" est votre ami.

Si cela vous pose problème, vous pouvez définir la variable d'environnement PERL5LIB, mais cela ne devrait pas être nécessaire.

Je passe toujours les chemins de fichiers de style DOS en tant que paramètres dans le script perl, à savoir "d: \ data \ myfile.txt", pas "/cygdrive/d/data/myfile.txt" ;. Aussi étrange que cela puisse paraître, ce mélange de notation de chemin fonctionne:

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

Beaucoup de ces solutions sont bonnes, mais je préfère une solution simple que je n'ai pas à modifier plus d'une fois.

Il suffit d’ajouter / modifier une ligne dans votre fichier .bashrc.

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

source .bashrc depuis votre shell (ou en créer un nouveau) et exécutez votre programme.

source ~/.bashrc
perl script.pl 

Ce n'est probablement pas une solution à privilégier, mais vous devriez pouvoir modifier le #! ligne:

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

Je me réfère toujours à un emplacement et à une installation explicites de perl, plutôt que de s'appuyer sur ce qui se trouve dans / usr / bin.

J'utilise deux scripts pour modifier la première ligne de scripts Perl en fonction de celui qui occupe Perl en premier sur mon chemin: rightperl vers le code Perl figurant en premier dans mon $ PATH maintenant , envperl modifiera la ligne en #! / usr / bin / env perl afin que Perl ne soit utilisé que lorsque le script est appelé. Fonctionne très bien sous Cygwin (et à partir d'un shell Unix en général).

Si vous ne voulez pas vous perdre dans un chemin ou faire quelque chose de permanent, il existe un hack TEMPORAIRE facile. Tapez " où Perl " à l'invite de Cygwin sh. Il listera tous les Perl.exe qu'il voit dans PATH dans leur ordre d'exécution. Changez les noms de ceux que vous ne voulez pas voir qui sont listés avant le perl que vous voulez utiliser. Mais n'oubliez pas de les changer lorsque vous avez terminé ou vous pourriez avoir quelques problèmes sur la route.

Je n'ai pas ma machine cygwin à proximité, je ne peux donc pas le tester, mais vous pouvez peut-être utiliser la commande frontale avec un script: accédez à / bin sous cygwin et déplacez-y perl.exe. comme perl-org.exe, puis configurez un script shell qui exécute votre autre perl avec les mêmes arguments.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top