Ich verwende derzeit Strawberry Perl als meine primäre Perl-Distribution. Ich habe jedoch einige Anwendungen, die Perl-Aufrufe über Cygwin machen. Diese Fehler schlagen in der Regel fehl, weil sie die Version von Perl aufrufen, die mit cygwin gepackt wurde, und nur in den lib-Ordnern von cygwin nachgesehen haben. Wie kann ich meine cygwin-Umgebung ändern, um stattdessen Strawberry Perl (und die C:/strawberry/perl/lib dirs) aufzurufen?Wie kann ich meine cygwin-Umgebung ändern, um Strawberry Perl anstelle der paketierten Perl-Distribution zu verwenden?
Antwort
Wenn Sie Perl aus cygwin mit dem Setup-Programm entfernen, wird standardmäßig Strawberry Perl verwendet.
Wenn Sie Perl nicht von Cygwin entfernen können, können Sie eine symbolische Verknüpfung zur Perl-Programmdatei von Strawberry erstellen.
Von einem Cygwin-Shell den folgenden Satz von Befehlen:
$ mv /usr/bin/perl /usr/bin/perl-cygwin
$ ln -s /cygdrive/c/strawberry/perl/bin/perl.exe /usr/bin/perl
Dies wird vorausgesetzt, Sie den Standard Strawberry Perl Installer verwendet. Aktualisieren Sie Ihren Standort perl.exe
entsprechend, wenn Sie ihn woanders installiert haben.
Überprüfen Sie, ob die Verbindung durch Überprüfung der Perl-Version ordnungsgemäß funktioniert:
$ perl -v
Es sollte sagen Dies ist Perl (Version) gebaut für mswin32-x86-Multi-Thread (oder ähnlich) und nichtfür cygwin-thread-multi-64int gebaut.
Ich habe meine Cygwin-Maschine nicht in der Nähe, also kann ich das nicht testen, aber vielleicht kannst du den perl-Befehl mit einem Skript beenden: Gehe zu/bin unter cygwin und verschiebe die perl.exe dorthin ansonsten wie perl-org.exe, dann richte ein Shell-Skript ein, das dein anderes Perl mit denselben Argumenten ausführt.
Sie können Ihren PATH ändern, um zuerst die Strawberry-Verzeichnisse zu setzen. Strawberry versucht, nett zu sein, indem er seine Verzeichnisse am Ende des Pfades ablegt. Wenn Sie jedoch aus der ZIP-Datei installiert haben, hat es den PATH überhaupt nicht geändert.
Sie könnten/usr/bin/perl verschieben, aber das ist eine schlechte Idee, da es bricht, wenn Cygwin versucht, zu aktualisieren, was es für seine Perl hält. Das hatte ich diese Woche und passierte mir auf meinem Mac, bis ich aufhörte, mit dem System-Setup zu spielen und meine eigenen Sachen komplett getrennt zu installieren.
Dies ist wahrscheinlich keine bevorzugte Lösung, aber Sie sollten in der Lage sein, die # zu ändern! Leitung:
#!/cygdrive/c/strawberry/perl/bin/perl5.10.0
ich auf eine explizite Standort und Installation von Perl beziehen sich immer, anstatt sich auf das, was in/usr/bin ist.
Ich habe zwei Skripte, die ich die erste Zeile von Perl-Skripten ändern verwenden, um welche auch immer Perl zuerst in meinem Weg ist: rightperl Hardcodes zum Perl, die ersten in meinem $ PATH ist jetzt wird envperl die Zeile zu #!/usr/bin/env perl, damit die zu verwendende Perl-Datei nur zum Zeitpunkt des Aufrufs des Skripts ausgewählt wird. Funktioniert wirklich gut unter Cygwin (und von einer Unix-Shell im Allgemeinen).
Eine gute Sache, die ich hinzufügen kann, ist, dass, wenn Sie das richtige Perl erhalten, zuerst in den Pfad zu gehen, sollte es Site-spezifische CPAN-Module, die Sie möglicherweise mit Erdbeere Perl in einer CMD-Shell ausgeführt installiert haben.
"welche perl" ist dein freund.
Wenn Sie Probleme damit hatten, könnten Sie die Umgebungsvariable PERL5LIB festlegen, dies sollte jedoch nicht notwendig sein.
Ich übergebe noch im DOS-Stil Dateipfade als Parameter in das Perl-Skript, d. H. "D: \ data \ myfile.txt", nicht "/cygdrive/d/data/myfile.txt". So seltsam genug, diese Mischung aus Pfadnotation funktioniert:
bash> /cygdrive/d/scripts/myscript.pl d: \ data \ myfile.txt
Wenn Sie zu verwirren wollen nicht um mit irgend Pfade oder etwas dauernd dort ist ein einfacher TEMPORARY Hack. Geben Sie "Where perl" bei Cygwin sh ein. Es wird alle Perl.exe in PATH in der Reihenfolge ihrer Ausführung angezeigt. Ändern Sie die Namen derer, die nicht angezeigt werden sollen und die vor dem Perl aufgeführt werden, das Sie verwenden möchten. Aber denken Sie daran, sie zu ändern, wenn Sie fertig sind, oder Sie könnten ein paar Probleme auf der Straße haben.
Viele davon sind gute Lösungen, aber ich nehme eher eine einfache, die ich nicht mehr als einmal ändern muss.
Alles, was Sie tun müssen, ist eine Zeile in Ihrer .bashrc-Datei hinzufügen/ändern.
Quelle. Bashrc-Datei von Ihrer Shell (oder starten Sie eine neue Shell) und führen Sie Ihr Programm.
source ~/.bashrc
perl script.pl
Dies ist Best Practices weise die richtige Antwort; o), aber es dauert einige Jahre für einige Leute, es zu erkennen ...; o) –
arbeitete wie ein Charme! Vielen Dank! –
nett ... Sehr hilfreich .. Danke auch. – Paul