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

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


person Sam Johnson    schedule 21.01.2009    source источник


Ответы (8)


Если вы удалите 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-thread. 64инт.

person cowgod    schedule 21.01.2009
comment
приятно ... Очень полезно .. Спасибо. - person Paul; 15.12.2010
comment
Я знаю, что это было давным-давно, но БОЛЬШОЕ СПАСИБО. Это косвенно помогло мне решить проблему, которую я пытался решить в течение двух дней. Мне нужно было, чтобы установка perl для клубники выполнялась из cygwin, потому что мне нужны были модули для клубники, но мне нужно было, чтобы cygwin правильно интерпретировал команды linux программы (например, mv). - person Jantzilla; 19.06.2019

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

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

person brian d foy    schedule 22.01.2009

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

"какой перл" твой друг.

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

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

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

person Community    schedule 22.06.2009

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

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

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

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

source ~/.bashrc
perl script.pl 
person Decrepit    schedule 20.03.2015
comment
Это лучший вариант правильного ответа ;o), но некоторым людям потребуется несколько лет, чтобы понять это... ;o) - person Yordan Georgiev; 26.07.2016

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

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

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

person skiphoppy    schedule 05.02.2009

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

person reinierpost    schedule 01.04.2009

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

person Community    schedule 29.04.2012

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

person Shannon Nelson    schedule 21.01.2009