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

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

Вопрос

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

Это было полезно?

Решение

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

Другие советы

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

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

Я могу добавить еще одну хорошую вещь: если вы поставите правильный 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

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

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

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

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

source ~/.bashrc
perl script.pl 

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top