Дану замітку мене спонукали написати певні складності при виконанні одиночного скрипта на мові 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 Мб).
Ось, власне, і все, що я хотів сказати.