Как использовать путь по умолчанию для 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 который был использован для сборки и установки вашего пакета.

Другие вопросы по тегам