среда, 4 июля 2007 г.

Установка perl модулей

CPAN - это средоточие интеллектуальной мощи десятков известных и (и сотен не очень известных) perl-хакеров. Это сетевой архив тысяч perl модулей, охватывающий абсолютно все мыслимые области применения программирования. Определенно, perl сегодня не занимал бы того место, которое он занимает сейчас, если бы не было CPAN, отметившего в 2005 году своё десятилетие. Правилом любого perl программиста должно быть: сначала ищи на CPAN и только потом, в случае отсутствия там, уже пиши сам. Ведь работодатель вас ценит и платит за то, что вы умеете быстро собирать работающие машины (программы) из готовых запчастей (perl модули из CPAN), а не тратите недели рабочего времени на изобретение заново колес и шестеренок (библиотеки классов и функций). Perl модули распространяются в виде архивов исходного кода с расширением .tar.gz. В одном архиве исходного кода может быть несколько perl модулей. Основной веб-интерфейс для работы с CPAN — http://search.cpan.org. На этом сайте можно найти интересующий perl модуль по структурированному каталогу или по имени. Для каждого модуля можно прочитать встроенную документацию и исходный код. Как правило, все perl модули очень хорошо документированы. Естественно, можно скачать архив исходного кода. В каждом архиве исходного кода прилагается инструкция по установке, обычно она включает распаковку архива и выполнение команд:
perl Makefile.PL
make
make test
make install
Такой метод установки прекрасно работает, но им неудобно пользоваться. Почему? Из-за зависимостей модулей. Например, для установки часто используемой библиотеки модулей LWP (libwebperl — библиотека для работы с web из perl) требуются уже установленные perl модули: URI, Compress::Zlib, HTML::Parser. В свою очередь, для установки модуля Compress::Zlib требуются уже установленные модули: IO::Uncompress::Gunzip, IO::Compress::Gzip, Compress::Raw::Zlib, IO::Uncompress::Base, IO::Compress::Gzip::Constants, IO::Compress::Base и IO::Compress::Base::Common. И так далее... дерево зависимостей может быть очень большим. Скачивать и устанавливать все модули в ручную — просто потеря времени. Для автоматизации процесса разрешения зависимостей существует специальный perl модуль CPAN. В его состав входит утилита cpan, предоставляющая консоль доступа к архиву. Ею мы и будем пользоваться. При первом запуске утилиты будет задано несколько вопросов по параметрам конфигурации. Ответы по умолчанию выбраны достаточно разумно, поэтому я не вижу смысла отказываться от автоматического конфигурирования:
root@slack11:~# cpan
/usr/lib/perl5/5.8.8/CPAN/Config.pm initialized.
...
Are you ready for manual configuration? [yes] no
...
cpan shell -- CPAN exploration and modules installation (v1.7602)
cpan>
Если для доступа в интернет используется http proxy сервер, то необходимо задать параметры ftp_proxy и http_proxy. Если proxy сервер требует авторизацию, то url задается по схеме "http://login:password@adrr:port/":
cpan> o conf ftp_proxy "http://adrr:port/"
    ftp_proxy          http://adrr:port/
cpan> o conf http_proxy "http://adrr:port/"
    http_proxy         http://adrr:port/
cpan> o conf commit
Чтобы проверить связь cpan с внешним миром, можно загрузить информацию о текущем состоянии базы данных модулей:
cpan> reload index
Теперь модуль CPAN сконфигурирован и готов к работе. Например, можно установить уже упоминавшуюся библиотеку LWP со всеми зависимостями с помощью команды:
cpan> install LWP
Остается только смотреть на мелькающие надписи, чувствуя себя в матрице. Однако полностью расслабится не удастся, изредка придется отвечать на возникающие на экране на вопросы. Вот собственно и всё, теперь установить любой perl модуль — дело нескольких минут. В завершение хочется отметить, что алгоритм разрешения зависимостей модулей постоянно совершенствуется, changelog впечатляет. Поэтому можно порекомендовать обновить саму утилиту cpan и установить дополнительные модули, облегчающие её работу. Утилита cpan может обновить сама себя, для этого следует выполнить команду:
cpan> install Bundle::CPAN
После обновления утилиты cpan, её надо перезапустить, чтобы изменения вступили в силу. Скорее всего придется заново пройти этап конфигурирования, в автоматическом режиме, конечно :-). Вы сразу заметите, что в консоле cpan появилась возможность пролистать историю ранее введенных команд.

5 комментариев:

Анонимный комментирует...

Премного благодарен.
Отличная подборка статей по Perl.
:)

Интересно, а есть ли Perl-модуль для генерации графического кода, как здесь на странице?

Анонимный комментирует...

Какой графический код вы имеете в виду?

Анонимный комментирует...

графический код
для защиты Web-форм от роботов-сканеров?
Тот который используется и здесь на блогере.

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

xeim комментирует...

Вы имеете в виду тест Тьюринга CAPTCHA ?
На CPAN такие модули есть. Я, например, в своё время пользовался GD::SecurityImage. Но есть и другие.

De7c3L комментирует...

Зддравствуйте, А никто не может подсказать, почему при установке пакетов чере cpan, они просто скачиваются, но не устанавливаются, т.е остаются в архивах и все.