Переход в систему Perl с использованием перлбрю

Во-первых, некоторый фон.

perlbrew - это инструмент, помогающий с установкой Perl в нестандартный каталог (обычно в вашем домашнем каталоге).

Он также помогает вам контролировать, какая установка Perl используется при выполнении perl в интерактивной оболочке. Переключение между установками осуществляется с помощью perlbrew use и perlbrew switch. perlbrew use влияет только на текущую оболочку, а perlbrew switch является более постоянным.

$ perl -V:version             |  $ perl -V:version
version='5.20.0';             |  version='5.20.0';
                              |
$ perlbrew use 5.18.2t        |  $ perlbrew switch 5.18.2t
                              |
$ perl -V:version             |  $ perl -V:version
version='5.18.2';             |  version='5.18.2';
                              |
$ bash -ic 'perl -V:version'  |  $ bash -ic 'perl -V:version'
version='5.20.0';             |  version='5.18.2';

perlbrew off используется для возврата к использованию системы Perl, но она временная, как perlbrew use. Есть ли способ вернуться к системе Perl с постоянством perlbrew switch?

Ответ 1

Чтобы perlbrew управлял установкой perl который не был установлен perlbrew, выберите имя (" system " в моем примере) и создайте ссылку на его каталог bin следующим образом:

cd "${PERLBREW_ROOT:-$HOME/perl5/perlbrew}"
mkdir perls/system
ln -s /usr/bin perls/system/bin

Теперь он появится в perlbrew list

$ perlbrew list
  ...
  system (5.10.1)
  5.18.2t
* 5.20.0t
  ...

И вы сможете использовать perlbrew use и perlbrew switch.

$ perl -V:version
version='5.20.0';

$ perlbrew switch system

$ perl -V:version
version='5.10.1';

$ bash -ic 'perl -V:version'
version='5.10.1';

Это лучше всего работает с установками, которые имеют одинаковые installbin, installvendorbin (если применимо) и каталоги installsitebin, как возвращено

perl -V:'install.*bin'

Кстати, аналогичный подход можно использовать для создания псевдонимов для установок perlbrew. Например,

 ln -s 5.26.1 perls/5.26           # Point to the latest release of a version.
 ln -s 5.26.1 perls/project_name   # Point to the install used by a project.