Прошло несколько дней, когда я дергал себя за волосы, пытаясь заставить устаревший Perl-скрипт работать как cgi на сервере apache2. Для этого требуется Crypt :: OpenSSL :: AES. Из журналов ошибок Apache:
Can't locate Crypt/OpenSSL/AES.pm in @INC
Самым простым было бы, если бы пакет ubuntu мог установить его вместе со мной, но я не могу найти какой-либо пакет с нужными файлами. Следующее ничего не возвращает:
apt-file search AES.pm
Как обычный пользователь, я установил cpan и использовал его для установки модулей perl, так что Crypt :: OpenSSL :: AES является установлен в моем пользовательском каталоге в /home/user/.cpan/build/Crypt-OpenSSL-AES-0.02-H74J64/lib
. К сожалению, копирую ли я вручную AES.pm в нужное место (/usr/local/lib/perl/5.10.1/...
согласно @INC) или я добавляю переменную env PERL5LIB в файлы конфигурации apache2 (SetEnv PERL5LIB /home/user/.cpan/build/Crypt-OpenSSL-AES-0.02-H74J64/lib
), журналы ошибок теперь показывают, что отсутствует общий объект:
Can't locate loadable object for module Crypt::OpenSSL::AES in @INC
Сообщение об ошибке немного отличается от первого (сначала я этого не заметил): теперь оно делает найдите AES.pm, но есть еще одна зависимость от неуказанного «загружаемого объекта», и я не знаю, какой именно. Openssl установлен в моей системе.
Так:
Как правило, как правильно (в системе Linux-ubuntu) установить модули Perl для работы с сервером apache2? (Я искал, и на этот вопрос есть много ответов, но он все равно не работает).
В частности, как я могу должным образом удовлетворить зависимость моего приложения cgi perl от Crypt :: OpenSSL :: AES?
Я решил свою проблему:
Установка пакета
Debian и Ubuntu
aptitude install libssl-dev
CentOS или Fedora
yum install -y openssl-devel`
Компиляция модуля вручную
sudo cpan Crypt/OpenSSL/AES.pm
Обычно в репозитории Ubuntu есть пакеты * -dev, чтобы разработчики и администраторы могли создавать другое программное обеспечение. Таким образом, пакеты для простого запуска программы могут уменьшиться в размере.
Ты должен посмотреть на http://debian.pkgs.cpan.org/. Он дает вам возможность создавать свои собственные файлы .deb из пакетов CPAN. Вы можете попытаться просто выстрелить в их предварительно упакованные, но помните, что они могут сломаться из-за различий между машинами Debian, для которых они были созданы, и какой бы версией Ubuntu вы не пользовались: «Здесь есть Дракон».
Как насчет создания пакета с dh-make-perl
(https://wiki.debian.org/PerlFAQ)? Слишком поздно, но может кому-то помочь.