Как я могу изменить свою среду cygwin для использования Strawberry Perl вместо упакованного дистрибутива Perl? - PullRequest
12 голосов
/ 21 января 2009

В настоящее время я использую Strawberry Perl в качестве основного дистрибутива Perl. Тем не менее, у меня есть некоторые приложения, которые делают вызовы Perl через Cygwin. Они обычно терпят неудачу, потому что они вызывают версию Perl, которая была упакована с cygwin, и смотрят только в папки lib cygwin. Как я могу изменить свою среду cygwin для вызова Strawberry Perl (и использовать вместо нее каталоги C: / strawberry / perl / lib)?

Ответы [ 8 ]

20 голосов
/ 21 января 2009

Если вы удалите Perl из cygwin с помощью программы установки, он по умолчанию будет использовать Strawberry Perl.

Если вы не можете удалить Perl из cygwin, вы можете создать символическую ссылку на исполняемый файл Perl из Strawberry.

В оболочке cygwin используйте следующий набор команд:

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

Предполагается, что вы использовали установщик Strawberry Perl по умолчанию. Обновите ваше местоположение perl.exe соответственно, если оно установлено где-то еще.

Убедитесь, что ссылка работает правильно, проверив версию Perl:

$ perl -v

Должно быть сказано: Это perl, (версия), созданная для MSWin32-x86-multi-thread (или аналогичная) и , а не , созданная для cygwin-thread-multi -64int .

1 голос
/ 20 марта 2015

Многие из них являются хорошими решениями, но я предпочитаю более простое, которое мне не нужно изменять более одного раза.

Все, что вам нужно сделать, это добавить / изменить строку в вашем файле .bashrc.

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

Исходный файл .bashrc из вашей оболочки (или запуск новой оболочки) и запуск вашей программы.

source ~/.bashrc
perl script.pl 
1 голос
/ 22 июня 2009

Одна хорошая вещь, которую я могу добавить, - это то, что если вы получаете правильный perl, который стоит первым в пути, он должен обрабатывать специфичные для сайта модули CPAN, которые вы, возможно, установили с использованием клубничного perl, работающего в оболочке CMD.

"Какой Perl" ваш друг.

Если у вас возникли проблемы с этим, вы можете установить переменную окружения PERL5LIB, но в этом нет необходимости.

Я все еще передаю пути к файлам в стиле DOS в качестве параметров в сценарий perl, то есть «d: \ data \ myfile.txt», а не «/cygdrive/d/data/myfile.txt». Как ни странно, эта смесь обозначений путей работает:

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

1 голос
/ 23 января 2009

Вы можете изменить свой PATH, чтобы сначала разместить каталоги Strawberry. Strawberry пытается быть милым, помещая свои каталоги в конец PATH. Однако, если вы установили из файла .zip, он вообще не изменил PATH.

Вы можете переместить / usr / bin / perl, но это плохая идея, потому что она ломается, когда cygwin пытается обновить то, что он считает своим perl. Я только что случился со мной на этой неделе и имел обыкновение случаться со мной на моем Mac, пока я не перестал играть с настройкой системы и установил свои собственные вещи совершенно отдельно.

0 голосов
/ 29 апреля 2012

Если вы не хотите возиться с какими-либо путями или делать что-то постоянное, есть простой ВРЕМЕННЫЙ взлом . Напечатайте "где perl" в приглашении Cygwin sh. Он перечислит все Perl.exe, которые он видит в PATH, в порядке их выполнения. Измените имена тех, кого вы не хотите видеть, которые будут перечислены перед Perl, который вы хотите использовать. Но не забудьте поменять их обратно, когда закончите, иначе у вас могут возникнуть проблемы в будущем.

0 голосов
/ 01 апреля 2009

У меня есть два сценария, которые я использую для изменения первой строки сценариев Perl в зависимости от того, какой Perl находится первым в моем пути: rightperl жесткие коды для Perl, который является первым в моем $ PATH сейчас , envperl изменит строку на #! / Usr / bin / env perl, поэтому используемый Perl выбирается только во время вызова скрипта. Очень хорошо работает под Cygwin (и вообще из оболочки Unix).

0 голосов
/ 05 февраля 2009

Это, вероятно, не предпочтительное решение, но вы должны иметь возможность изменить #! строка:

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

Я всегда ссылаюсь на явное местоположение и установку perl, а не полагаюсь на то, что находится в /usr/bin.

0 голосов
/ 21 января 2009

У меня нет моей машины cygwin, поэтому я не могу проверить это, но, возможно, вы можете запустить команду perl с помощью скрипта: перейдите в / bin под cygwin и переместите туда perl.exe в другое например, perl-org.exe, затем настройте сценарий оболочки, который запускает другой Perl с теми же аргументами.

...