Установка нескольких версий Perl5 при помощи Perlbrew

Возможно ни для кого не секрет, что если у Вас есть Linux, то у Вас уже есть Perl... Всё вызвано тем, что много системных скриптов во многих дистрибутивах Linux написано как раз на Perl. Вроде всё нормально, но порой нам нужно использовать иную от установленной в системе версию. Причины могут быть разными: нужно поновее (ибо в системном не хватает возможностей) или же нужно постарее (пример из жизни: разработка Web-приложения, когда система на целевом сервере - Debian, а на компе - Archlinux) или же придумайте причину сами... В счастию такую пробему решили - создали perlbrew. Помимо установки нескольких версий, она также позволит Вам установить несколько окружений для одной версии, с разным набором модулей (опять же актуально для разработки и тестирования)...

Итак прежде чем начать рекомендую Вам ознакомиться с официальным сайтом perlbew. Там можно найти инструкции по установке. Но есть немалая вероятность, что эта штука присутвует в используемом Вами дистрибутиве в виде пакета. Я всё это проверял на Archlinux, для него пакет есть.

В оффициальной документации сказано, что perlbrew управляет версиями Perl в домашней директории. Это так, но не только, домашней директорией Вы не ограничены. Для установки в любую произвольную директорию необходимо задать переменную окружения PERLBREW_ROOT (об этом кстати тоже сказано в оффициальной документации):

$ export PERLBREW_ROOT=/opt/perlbrew

Наверное Вы уже догадались в какую директорию мы будем ставить Perl :). Для начала работы необходимо проинициализировать окружение perlbrew.

$ perlbrew init

По указанному ранее пути мы увидим несколько директорий, для чего они нужны узнаем позже. Чтобы установить Perl нужно узнать какие версии доступны к установке:

$ perlbrew available
perl-5.21.2
  perl-5.20.0
  perl-5.18.2
  perl-5.16.3
  perl-5.14.4
  perl-5.12.5
  perl-5.10.1
  perl-5.8.9
  perl-5.6.2
  perl5.005_04
  perl5.004_05
  perl5.003_07

В принципе можем ставить любую из этих версий. Ставим:

$ perlbrew install perl-5.14.4

Perl будет установлен по пути /opt/perlbrew/perls/perl-5.14.4. При установке можно указать другое имя целевой директории (полезно при установке нескольких вариантов одной версии Perl).

$ perlbrew install --as perl-5.14-webdev perl-5.14.4

Естесственно Perl будет установлен в директорию /opt/perlbrew/perls/perl-5.14-webdev. Есть ещё пара интересных флагов для установки Perl.

  • --threads - собирать Perl с поддержкой ithreads;
  • --notest - не проводить тесты после сборки;
  • -j n - собирать в n потоков.

Это конечно же не все. Смотрите документацию на предмет этих флагов.

После установки Perl таким вот образом можно запускать Perl-программы в его окружении. При этом можно даже не юзать perlbrew для создания окружения. Можно просто указать нужный бинарник Perl, например:

/opt/perlbrew/perls/perl-5.14-webdev/bin/perl

При запуске программы будут доступны все модули в рамках этой версии. Доустанавливать модули можно используя CPAN:

$ /opt/perlbrew/perls/perl-5.14-webdev/bin/cpan

А там дальше по тексту.

Большие плюсы данного подхода к установке Perl:

  • Можно контролировать список установленных модулей, что точно позволить знать какие из них нужны Вашему приложению;
  • Системный Perl не засоряется модулями, что нужны Вам лишь для разработки;
  • Системный Perl не засоряется модулями, установленными через CPAN (а всем известно, что такие модули не учитываются пакетным менеджером системы).

PS. При использовании perlbrew для многопользовательского использования Perl нужно помнить что все изменения по Perl'ах должен проводить тот пользователь, что имеет доступ к записи окружения perlbrew. Это очевидно, не забудьте. Установка других версий, установка модулей через CPAN - это всё туда же.

PPS. Для использования perlbrew нужен perl %).