Home » Linux » Centos » Конфигурирование и подгрузка модулей Perl в Linux

Конфигурирование и подгрузка модулей Perl в Linux

Данную заметку меня побудили написать определённые сложности при выполнении одиночного скрипта на языке Perl. Казалось бы, интерпретатор языка уже установлен – бери и пользуйся. Да не тут то было. Хочу избавить других от грабель, по которым я ходил целый вечер.

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

На серверах же в их минималистичных вариантах ничего подобного не установлено, поэтому, пользуясь многочисленными «готовыми» интернет-решениями, можно долго ругаться от того, что на экран вываливается масса текстовой диагностики, но в результате ничего по этим рецептам не устанавливается и мы получаем в конце концов FAIL. Так поначалу было и в моём случае.

Требовалось запустить скрипт, который обращался к библиотеке модулей LPW, да ещё и работал по SSL. При попытке запуска я получил сообщение о невозможности определить местоположение модуля UserAgent.pm, который нужен для работы с WWW и который спокойно себе лежал по указанным в переменной @INC перловым путям. С этих странностей, собственно, всё и началось. Пришлось изрядно попотеть, чтобы разобраться в том, как подгружать и настраивать модули Perl.

Итак, отталкиваясь от того, что Perl-у для установки своих модулей нужны cc, make и иже с ними, сделаем предварительную подготовку системы, чтобы всё прошло гладко. Установим необходимые пакеты для компиляции из исходников и подгрузим библиотеки для сборки программ с поддержкой SSL:

#apt-get install make gcc libssl-dev #для дистрибутивов на базе Debian
#yum install make gcc openssl-dev #для дистрибутивов на базе Red-Hat

Теперь обновим установочный менеджер самого Perl. Он называется cpan.

С ним можно работать как в интерактивном режиме, так и в режиме однострочных команд.

Запуском команды cpan мы перейдём в интерактивный режим и позволим менеджеру сконфигурировать рабочее окружение Perl в автоматическом режиме, отвечая на все приглашения «yes». По завершении обновим сам менеджер:

#cpan install CPAN
#cpan reload cpan

Вот теперь можно приступать к установке необходимых библиотек модулей.

#cpan> install LWP
#cpan> install Bundle::LWP
#cpan> install HTTP::Protocol::https

Все исходные коды устанавливаемых вами модулей скачиваются из репозитория CPAN (www.cpan.org), помещаются в каталог /root/.cpan/build/ и представлены в виде папок с названиями этих пакетов, например, LWP-Protocol-https-6.06-0, где последняя цифра, своего рода, номер неудачной попытки сборки модуля. Сколько раз вы попытаетесь его собрать, столько и будет создано однотипных папок с практически одинаковым содержимым.

В процессе установки из менеджера cpan происходит активное тестирование пакета с помощью множества тестов, некоторые из которых по тем или иным причинам могут закончиться неудачно.
И если хотя бы один тест не будет пройден, вы получите сообщение о том, что модуль не создан.

Само собой, лучше, чтобы все тесты были пройдены, однако это не всегда критично и можно собрать модуль самостоятельно, минуя тестирование. Для этого следует перейти в соответствующую папку пакета /root/.cpan/build/package-X и поочерёдно выполнить команды:

#perl Makefile.PL
#make
#make install

Вероятность успешной сборки и загрузки модуля в боевой режим очень велика, хотя при работе целых фреймворков на Perl могут появиться жалобы на неудовлетворённые зависимости и т.п.

После завершения сборки Perl сам раскидает результат по правильным путям независимо от того, как и откуда выполнялась сборка (можно самостоятельно скачать исходники с www.cpan.org и запустить сборку из любой папки), поэтому, в принципе, папку /root/.cpan/ можно удалить, а занимает она порой немало места (в моём случае 87 Мб).

Вот, собственно, и всё, что я хотел сказать.

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Do NOT follow this link or you will be banned from the site!