Установка модулей CPAN в домашний каталог (Perl)
Материал из DiPHOST.Ru wiki system
CPAN (Comprehensive Perl Archive Network - архив Perl) - является центральным хранилищем всего, что касается Perl. В нём содержится полный дистрибутив Perl, документация и огромная коллекция библиотек (модулей). Если что-то написано на Perl, приносит пользу и бесплатно, то, вероятно, оно имеется в CPAN.
Один из способов посмотреть модули CPAN - посетить сайт http://search.cpan.org.
Содержание |
Настройка консоли для работы с локальными модулями
Для того, чтобы интерпретатор Perl, вызванный из консоли, "видел" установленные локально библиотеки, добавьте в файл .profile следующие строки:
PERL5LIB=$HOME:$HOME/lib:$HOME/lib/perl5 export PERL5LIB MANPATH=$HOME/share/man export MANPATH
Это следует сделать ДО установки модулей, во избежании накладок при установке. Не забудьте "перелогиниться" после добавления, чтобы настройки применились.
Ручная установка
Модули находящиеся на CPAN можно скачивать и компилировать вручную. Как правило последовательность команд компиляции и требуемые модули, перечислены в файле README, обычно входящем в состав дистрибутива модуля. Все модули CPAN могут устанавливаться одним из способов: ExtUtils::MakeMaker и/или Module::Build. ExtUtils::MakeMaker использует файл Makefile.PL. Для установки в домашний каталог требуется указать переменную окружения INSTALL_BASE:
perl Makefile.PL INSTALL_BASE=~
Module::Build использует файл Build.PL. Для установки в домашний каталог требуется указать ключ --install_base:
perl Build.PL --install_base ~
Остальные ключи и предпочтительный способ установки обычно описаны в файлах README и INSTALL внутри дистрибутива модуля.
Установка с помощью модуля CPAN
Также в состав дистрибутива Perl входит модуль под названием CPAN. Он позволяет автоматизировать операции установки необходимых модулей, включая установку зависимостей. Модуль может работать в ручном и пакетном режиме. Рассмотрим для простоты ручной режим работы. Для интерактивной работы с модулем следует набрать команду:
perl -MCPAN -e shell
При первом запуске программа попытается создать конфигурационный файл и будет задавать вопросы. Проблема в том, что при любых ответах итоговый конфигурационный файл, создаваемый обычно в директории .cpan/CPAN/MyConfig.pm в домашнем каталоге, не готов к использованию для установки модулей локально. В нём нас интересуют нижеследующие строки, которые должны быть заполнены подобным образом:
'build_dir' => qq[$ENV{'HOME'}/.cpan/build], 'cpan_home' => qq[$ENV{'HOME'}/.cpan], 'histfile' => qq[$ENV{'HOME'}/.cpan/histfile], 'keep_source_where' => qq[$ENV{'HOME'}/.cpan/sources], 'makepl_arg' => qq[INSTALL_BASE=$ENV{'HOME'}], 'mbuildpl_arg' => qq[--install_base $ENV{'HOME'}], 'prefs_dir' => qq[$ENV{'HOME'}/.cpan/prefs],
Вместо $ENV{'HOME'} может стоят полный путь до домашнего каталога пользователя, например: /home/ваш_логин
Убедившись в правильности конфигурации, можно устанавливать модули. Команда
perl -MCPAN -e shell
запускает специальную интерактивную оболочку. Установка модулей в ней производится например такой командой:
force install ИМЯ_МОДУЛЯ
Ключевое слово force позволит избежать отказа от установки в случае отрицательных результатов тестов, которые по разным причинам действительно могут быть отрицательными.
Настройка веб-сервера apache для работы с локальными модулями
В файл .htaccess в корневом каталоге сайта или в том каталоге, где будут cgi-скрипты, добавить строку:
SetEnv PERL5LIB /home/ваш_логин:/home/ваш_логин/lib:/home/ваш_логин/lib/perl5
Использование в cron
Для того, чтобы скрипты, запускающиеся по cron могли иметь доступ к локально установленным библиотекам, в начале crontab-файла следует прописать нужные строки:
PERL5LIB=/home/ваш_логин:/home/ваш_логин/lib:/home/ваш_логин/lib/perl5
Обращаем внимание, что переменные типа $PATH не разбираются в crontab и требуется полностью прописывать все пути.
Дополнительная информация
Модуль CPAN также предоставляет возможность и пакетной работы по управлению модулями CPAN. Стоит для более тонких настроек модуля или для программирования пакетной работы ознакомиться с документаций CPAN.pm