Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

", который perl" является вашим другом.

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

Я до сих пор проходят в пути к файлу DOS-стиль в качестве параметров в Perl script, т.е. "d:\Data\myfile.txt", а не "/cygdrive/d/data/myfile.txt". Настолько странно, что это сочетание нотации пути работает:

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

Ответ 4

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

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

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

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

source ~/.bashrc
perl script.pl 

Ответ 5

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

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

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

Ответ 6

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

Ответ 7

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

Ответ 8

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