Есть ли неглобальный эквивалент perlbrew?

Я использую Perlbrew прямо сейчас для управления несколькими версиями Perl, но Perlbrew является глобальным. Если я сделаю perlbrew switch perl-5.10.1 в любой оболочке, то все оболочки и скрипты теперь будут использовать Perl версии 5.10.1. Нет изоляции. Есть ли способ сделать переключатели Perlbrew локальными для оболочки или есть аналогичный инструмент, способный локально изменять активный Perl?


person Ryan C. Thompson    schedule 08.10.2010    source источник
comment
См. Также Как мне установить более одной версии Perl ? и [stackoverflow.com/questions/398221/ вы управляете модулями Perl при использовании диспетчера пакетов?)   -  person Ether    schedule 09.10.2010
comment
См. Этот связанный вопрос / ответ SO: stackoverflow.com/questions/3776390/   -  person draegtun    schedule 09.10.2010


Ответы (2)


В более поздних версиях Perlbrew вы можете делать perlbrew use perl-5.12.3 или что-то еще, и вы будете использовать эту версию Perl, но только в текущем сеансе оболочки. На другие сеансы это не повлияет.

person Piers Cawley    schedule 18.02.2011
comment
Я должен это попробовать. Похоже, именно то, что я хочу. - person Ryan C. Thompson; 18.02.2011

Только не используйте Perlbrew. Все, что он делает, это меняет за вас символические ссылки. Он должен спасти вашу работу, но когда это не так, больше нет причин использовать его.

Я рассказываю о том, как я это делаю, в Делайте ссылки на -версии в The Effective Perler. Я всегда знаю, какой Perl я использую, потому что мне никогда не нужно вспоминать, на какой из них я переключился последним, и я не мешаю чему-либо еще, ожидая конкретной версии за символической ссылкой. Вы по-прежнему можете использовать perlbrew для установки perls, но это тоже не избавит вас от лишней работы.

person brian d foy    schedule 08.10.2010
comment
Также здесь обсуждается поподробнее. - person Ether; 09.10.2010
comment
Я знаю, что всегда могу установить perl 5.10.1 как perl5.10.1 в моем пути, а затем явно указать версии, но я предполагаю, что поведение, которое я ищу, заключается в том, что perl запускает определенную версию perl по умолчанию. Затем, если я запускаю perlbrew switch в одной оболочке, тогда perl в этой оболочке относится к новой версии, но все остальные оболочки и программы продолжают запускать perl по умолчанию. И то же самое для остальной среды Perl: модули, исполняемые файлы, manpages / perldocs. Полагаю, мне придется научиться использовать пакет Furlani Modules, на который ссылается ваша статья, чтобы получить то, что я хочу. - person Ryan C. Thompson; 09.10.2010
comment
На самом деле, вероятно, будет нетрудно дать perlbrew возможность влиять только на локальную среду оболочки - поскольку он уже записывает файлы bashrc / cshrc, что означает, что он может устанавливать псевдонимы / функции оболочки. Напишите тот, который изменяет PATH вместо переключения символических ссылок, и вы золотой. Я могу попробовать. - person hobbs; 09.10.2010
comment
Однако работать с Perlbrew с переменными окружения сложнее, чем просто возиться с PATH. Вам также придется изменить несколько других переменных среды (например, MANPATH, чтобы получить правильную документацию, когда вы делаете man Some::Module). - person Ryan C. Thompson; 09.10.2010
comment
@Ryan perlbrew сейчас ничего не делает с этими вещами - например, man не находит ничего внутри perlbrew. Все, что он делает, - это помещает каталог в PATH и создает символические ссылки в этом каталоге. - person hobbs; 09.10.2010
comment
perldoc даже MANPATH? - person Ether; 13.10.2010