[Moscow.pm] perlbrew и утилиты типа preldoc, cpanm

Vladimir Timofeev vovkasm на gmail.com
Вс Окт 28 00:57:06 PDT 2012


27 октября 2012 г., 22:56 пользователь Иван Соколов
<vaneska.ru на gmail.com> написал:
> Привет всем!
>
> Активно пробую использовать perlbrew и натолкнулся на интересную фишку.
> perlbrew не переопределяет системный Perl /usr/bin/perl.
> Оно и понятно, это может обернуться очень плачевно.
> Но проблема в том, что если я у себя в консоли после, например
> perlbrew use 5.16.0,
> начинаю использовать утилиты типа perldoc  и cpanm, то они перестают работать.
> В этих скриптах итерпретатор задан как #!/usr/bin/perl, что заставляет
> скрипты запускаться
> через системный /usr/bin/perl. А вот /usr/bin/env perl, понятное дело,
> решает проблему.
>
> У кого есть опыт использования perlbrew, подскажите, как быть?
> Можно конечно тупо алиасы в консоли сделать, но это по моему не выход.
> Как вариант, попробовать тикеты создать, может изменят на env?

Там все должно работать из коробки. Дело в том, что когда вы собираете
модуль с конкретной версией perl или собираете "свой" perl, то
MakeMaker и Module::Build переписывают shebang у всех инсталлируемых
скриптов в "правильный". Соответственно если я смотрю на perldoc, к
примеру, от моего perl'а, то вижу:
head -n2 /home/vovkasm/perl5/perlbrew/perls/perl-5.16.1/bin/perldoc
#!/home/vovkasm/perl5/perlbrew/perls/perl-5.16.1/bin/perl
    eval 'exec /home/vovkasm/perl5/perlbrew/perls/perl-5.16.1/bin/perl
-S $0 ${1+"$@"}'
Так что проблема у вас не в том, что perlbrew ведет себя не правильно,
а в том, что одно из двух:
1. в PATH не попал (или попал, но не в том порядке) путь к папке с
кастомным perl'ом
2. bash и co умеют кешировать пути к прогам (в bash сброс этого кеша:
hash -r,  у кого-то есть команда rehash, и т.п.)

>
> --
> С уважением,
> Иван
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org



-- 
Vladimir Timofeev <vovkasm на gmail.com>


Подробная информация о списке рассылки Moscow-pm