Как использовать путь по умолчанию для ActivePerl 5.20 Mac OS X (/usr/bin/perl) вместо /usr/local/ActivePerl...?
Я установил ActivePerl 5.20.2 сегодня на Mac OS X 10.9.5 Проверка версии perl в Терминале (perl -v
) Вижу 5.20.2 Так что все вроде бы нормально. Но.. Когда я запускаю свои CGI-скрипты, скрипт запускается под встроенным Perl (5.16) (если используется #!/usr/bin/perl
). Если я использую #!/usr/local/ActivePerl5.20.2/bin/perl
тогда он работает под 5.20.2, что требуется.
Вопрос: возможно ли как-то изменить каталог для использования в моих сценариях из #!/usr/local/ActivePerl5.20.2/bin/perl
простой и знакомый #!/usr/bin/perl, работающий под ActivePerl вместо встроенного.
Мне нужно переопределить версию системы по умолчанию с новым ActivePerl.
Буду признателен за ваши подробные ответы (с именами файлов и каталогов, где они расположены), если они будут изменены для реализации спасения.
Спасибо!
2 ответа
Во-первых, вместо указания конкретного пути к вашему интерпретатору Perl в вашем скрипте:
#! /usr/local/ActivePerl5.20.2/bin/perl
или же
#! /usr/bin/perl
Укажите это:
#! /usr/bin/env perl
Это найдет первый исполняемый интерпретатор Perl в вашем $PATH
и затем используйте это для выполнения вашего сценария Perl. Таким образом, вместо того, чтобы менять свою программу, вам нужно только изменить $PATH
переменная.
В следующий раз взгляните на PerlBrew для установки другой версии Perl. PerlBrew позволит вам установить несколько версий Perl под управлением пользователя и позволит выбрать, какую версию Perl вы хотите использовать.
Я также рекомендую поставить /usr/local/bin
как первая запись в вашем $PATH
, Затем свяжите исполняемые файлы, которые вы хотите запустить, с этим каталогом. Вы можете использовать что-то вроде этого для создания своих ссылок:
for file in $/usr/local/ActivePerl5.20.2/bin/*
do
basename=$(basename $file)
ln -s "$file" "/usr/local/bin/$basename"
done
Таким образом, все программы, которые вы хотите выполнить, находятся в одном каталоге, что делает настройку $PATH
намного проще Я даже положил /usr/local/bin
прежде, чем /usr/bin
а также /bin
потому что я хочу иметь возможность переопределить версию системы по умолчанию.
Вопрос: возможно ли как-то изменить каталог для использования в моих сценариях из
#!/usr/local/ActivePerl5.20.2/bin/perl
простой и знакомый#!/usr/bin/perl
продолжая работать под ActivePerl вместо встроенного.
Даже не пытайся. Таким образом, кроется проклятие, а не спасение. Возможность указать конкретного интерпретатора, который будет обрабатывать ваши сценарии, является важной функцией.
Вместо этого упакуйте свой CGI-скрипт как простой модуль CPAN. Затем установите его, используя знакомую
$ /usr/local/ActivePerl5.20.2/bin/perl Makefile.PL
$ make install
рутина. Линия Шебанга будет автоматически отрегулирована, чтобы отразить perl
который был использован для сборки и установки вашего пакета.