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