Comment puis-je modifier mon environnement cygwin pour utiliser Strawberry Perl au lieu de la distribution packaged Perl?
8 réponses
si vous supprimez Perl de cygwin en utilisant le programme setup, il utilisera par défaut Strawberry Perl.
si vous ne pouvez pas supprimer Perl de cygwin, vous pouvez créer un lien symbolique vers L'exécutable Perl de Strawberry.
à Partir d'un shell cygwin, utilisez les commandes suivantes:
$ mv /usr/bin/perl /usr/bin/perl-cygwin
$ ln -s /cygdrive/c/strawberry/perl/bin/perl.exe /usr/bin/perl
ceci suppose que vous avez utilisé L'installateur de Perl Strawberry par défaut. Mise à jour de votre perl.exe
emplacement en conséquence si vous l'avez installé quelque part autre.
vérifiez que le lien fonctionne correctement en vérifiant la version Perl:
$ perl -v
Il faut dire c'est perl, (version) construit pour MSWin32-x86-multi-thread (ou similaires) et construit pour cygwin-thread-multi-64int.
vous pouvez changer votre chemin pour placer les répertoires Strawberry en premier. Strawberry essaie d'être sympa en mettant ses répertoires au bout du chemin. Si vous avez installé de la .fichier zip, cependant, il n'a pas modifier le CHEMIN d'accès à tous.
vous pouvez déplacer / usr/bin / perl, mais c'est une mauvaise idée car il casse quand cygwin essaie de mettre à jour ce qu'il pense être sa perl. Ça m'est arrivé cette semaine et ça m'arrivait souvent sur mon Mac jusqu'à ce que j'arrête de jouer avec la configuration du système et installé mes propres trucs complètement séparées.
une bonne chose que je peux ajouter est que si vous obtenez la bonne perl à venir en premier dans le chemin, il devrait manipuler les modules CPAN spécifiques au site que vous avez peut-être installé avec la perl de fraise tournant dans un shell CMD.
"qui perl" est votre ami.
si vous avez des problèmes avec cela, vous pouvez définir la variable D'environnement PERL5LIB, mais cela ne devrait pas être nécessaire.
je passe encore dans des chemins de fichier de style DOS comme paramètres dans le script perl, i.e. "d:\data\myfile.txt", pas de "/cygdrive/d/data/monfichier.txt". Si curieusement, ce mélange de notation de chemin fonctionne:
bash> /cygdrive/d/scripts/myscript.pl d:\data\myfile.txt
Beaucoup de ces sont de bonnes solutions, mais je préfère prendre facile que je n'ai pas à modifier plus d'une fois.
Tout ce que vous devez faire est d'ajouter/modifier une ligne dans votre .dossier bashrc.
# Prepend strawberry perl to cygwin's path
export PATH=/cygdrive/C/Tools/Perl/perl/bin:$PATH
source .bashrc à partir de votre shell, (ou démarrer un nouveau shell) et lancer votre programme.
source ~/.bashrc
perl script.pl
ce n'est probablement pas la solution préférée, 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 compter sur ce qui est dans /usr/bin.
j'ai deux scripts que j'utilise pour modifier la première ligne de scripts Perl à N'importe quel Premier Perl dans mon chemin: rightperl code en dur pour le Perl, qui est le premier dans mon $PATH , envperl modifier la ligne #!/usr/bin / env perl ainsi la Perl à utiliser n'est sélectionnée qu'au moment où le script est invoqué. Fonctionne très bien sous Cygwin (et à partir D'un shell Unix en général).
si vous ne voulez pas jouer avec les chemins ou faire quoi que ce soit de permanent il y a un facile TEMPORARY hack. Tapez "où perl"à L'invite Cygwin sh. Il énumérera tous les Perl.exe il voit dans le chemin dans leur ordre d'exécution. Changer les noms de ceux que vous ne voulez pas être vu que listé avant le perl que vous souhaitez utiliser. Mais N'oubliez pas de les modifier lorsque vous avez terminé, ou vous pourriez avoir quelques problèmes sur la route.
Je n'ai pas ma machine cygwin à proximité, donc je ne peux pas le tester, mais peut-être Pouvez-vous mettre en avant la commande perl avec un script: allez dans /bin sous cygwin et déplacez la perl.exe là à autre chose comme perl-org.exe, puis configurer un script shell qui exécute votre autre perl avec les mêmes arguments.