Использование CPAN для интерактивной и автоматической инсталляции модулей. Версия для печати
 

Для многих программистов одним из достоинств Perl является наличие большого числа готовых модулей, которые позволяют использовать Perl практически в любой области. Множество модулей включено в базовую поставку, но еще большее количество вы можете найти воспользовавшись Comprehensive Perl Archive Network (Всеобъемлющую Сеть Архивов Perl), называемую также CPAN, который распологается по адресу http://www.perl.com/CPAN/CPAN.html.

Модули находящиеся на CPAN можно скачивать и компилировать вручную (как правило последовательность команд компиляции и требуемые модули, перечислены в файле README, обычно входящем в состав дистрибутива модуля). Но в состав дистрибутива Perl входит полезный модуль под названием CPAN. Он позволяет автоматизировать операции установки необходимых программисту модулей, включая установку модулей, от которых зависит устанавливаемый модуль.

Модуль позволяет работать в интерактивном и пакетном режимах, что позволяет использовать его всем пользователям. Настройки, которые влияют на то, откуда и как скачиваются модули, как правило задаются при первом запуске данного модуля, и хранятся в файле $PERLLIB_PREFIX/$PERL_VERSION/CPAN/Config.pm (например, /usr/lib/perl5/5.6.1/CPAN/Config.pm). Также в этом файле задаются дополнительные флаги для Makefile и прочая информация.

Интерактивный режим работы

Вход в интерактивный режим производится запуском Perl следующей командной строкой perl -MCPAN -e shell. При самом первом запуске данного модуля вам придется ответить на несколько вопросов относительно параметров системы и расположении сервера CPAN, с которого будет производиться загрузка модулей. Затем вы получите командную строку, в которой и сможете выполнять разные команды.

Для установки модуля, имя которого вы знаете точно, используется команда install ModuleName. При этом выполнится последовательность команд make, make test и make install. Если устанавливаемому модулю для работы требуется модуль, который отсутствует в системе, то у пользователя запросят подтверждение на установку необходимого модуля. При запуске команды install выполняется проверка того, нуждается ли модуль в обновлении.

Установка файлов в систему, производится только в том случае, если выполнение make test прошло без ошибок. Для принудительной установки модуля используется команда force install ModuleName.

Для поиска модуля используется команда i /text/, при этом будут найдены все модули в названии которых входит слово text. Затем полученные имена модулей можно использовать для установки. Команда i, является наиболее общим случаем поиска. Для поиска по именам пакетов, авторов, модулей и файлов дистрибутивов используются команды b, a, m и d соответственно.

Существуют также дополнительные команды, которые используются только для извлечения дистрибутивов модулей или относящихся к ним файлов описаний. Команда get только скачивает указанный ей пакет, и н выполняет больше никаких действий. Команда readme отображает файл README для указанного дистрибутива.

Также полезной является команда r, которая перечисляет модули, версии которых меньше текущих версий соответствующих модулей, доступных на CPAN.

Пакетный режим работы

В пакетном режиме для программиста доступны все эти же команды, только они выполняются без запроса пользователя. Например, можно заставить Perl выполнять автоматическое обновление модулей, установленных в системе. Это выполняется с помощью команды:

perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'

Каждая из доступных команд, возвращающих списки модулей, также может возвращать списки идентификаторов модулей. Затем данные идентификаторы могут быть преобразованы в соответствующие реальные объекты с помощью метода CPAN::Shell->expand("Module",@things). Затем с помощью полученного объекта может быть произведена установка модуля. Например, вот как будет выглядеть установка модулей Net::FTP, MD5 и Data::Dumper:

for $mod (qw(Net::FTP MD5 Data::Dumper)){
    my $obj = CPAN::Shell->expand('Module',$mod);
    $obj->install;
}

Полезные советы

Модуль CPAN поддерживает концепцию пакетов (bundles). Эта концепция упрощают работу с группами модулей, связанных общими свойствами. Пакеты являются обычными модулями в пространстве имен Bundle::. Они не определяют никаких функций или методов, и как правило содержат только документацию. Когда пользователь устанавливает такой модуль, то происходит установка всех модулей, которые перечислены в тексте заданного для установки модуля.

Для удобной работы с модулем CPAN лучше установить дополнительные модули (например, Term::ReadKey и Term::ReadLine::GNU) , которые обеспечивают дополнение в командной строке по клавише табуляции и другие удобные возможности. Установка всех модулей производится командой install Bundle::CPAN.

Если вы не являетесь системным администратором, то для для установки двоичных файлов, модулей и документации для себя, вам необходимо добавить строку PREFIX=/путь/куда/вы/имеете/право/записи к параметру настройки makepl_arg. Все файлы будут установлены в каталоги, расположенные ниже каталога PREFIX, в не в системные каталоги. Для использования установленных таким образом модулей, вам необходимо будет добавить PREFIX в пути поиска файлов Perl.

Для получения дополнительной информации о модуле CPAN, его командах и параметрах настройки, смотрите perldoc CPAN.

 
Автор: Alex Ott
 
Оригинал статьи: http://woweb.ru/publ/58-1-0-357
 
Рейтинг@Mail.ru
© Студия WEB-дизайна PM-Studio, 2005. Все права защищены.