Как мне использовать Apache поставщика с самоскомпилированными Perl и mod_perl?
Вопрос
Я хочу использовать встроенный Apache от Apple или RedHat, но я хочу использовать Perl 5.10 и mod_perl.Какой наименее навязчивый способ добиться этого?Мне нужны бесплатные исправления безопасности для Apache, dav, php и т. д., но меня очень волнует, какую версию Perl я использую и что находится в моем пути @INC.Я не против скомпилировать свой собственный mod_perl.
Решение
Создайте свою версию Perl 5.10, следуя специальным инструкциям из документации mod_perl.Сообщите конфигуратору Perl, чтобы он установил его в какое-нибудь нестандартное место, например /usr/local/perl/5.10.0.
Используйте инструкции для создания общей библиотеки (или динамической, или .so) mod_perl для Apache вашего дистрибутива, но обязательно запустите Makefile.PL, используя твой версия перла:
/usr/local/perl/5.10.0/bin/perl Makefile.PL APXS=/usr/bin/apxs
Установите и настройте mod_perl как обычно.
После первого шага может оказаться полезным изменить путь, чтобы случайно не запутаться в том, какую версию Perl вы используете:
export PATH=/usr/local/perl/5.10.0/bin:$PATH
Другие советы
Вы захотите изучить mod_so
Я делал это раньше.Это было некрасиво, но сработало, тем более, что Perl от производителя обычно существует 2-3 года.
Я начал с создания собственного RPM для Perl, который устанавливал Perl в другое место, например /opt/
.Это было довольно прямолинейно.В основном я начал с этого, потому что не хотел, чтобы системные утилиты, использующие Perl, ломались, когда я обновлял/устанавливал новые модули.Мне пришлось изменить все мои сценарии, чтобы указать #!/opt/bin/perl
наверху, а иногда я даже играл с путем, чтобы убедиться, что мой перл идет первым.
Затем я взял исходный RPM mod_perl и изменил его, чтобы использовать мой /opt/bin/perl
вместо /usr/bin/perl
.У меня нет доступа к внесенным мной изменениям, поскольку это было на другом концерте.Мне потребовалось немного поиграть, чтобы получить это.
Это сработало, но я не мастер RPM, поэтому проверка зависимостей сработала не очень хорошо.Например, я мог удалить свой собственный RPM и все сломать.Для меня это не имело большого значения, поэтому я пошел дальше.
Я также смешивал RPM с установками модулей CPAN (я упоминал, что мы создали собственное зеркало CPAN с собственным кодом?).Это тоже было немного хрупко.Опять же, у меня не было ресурсов (то есть времени), чтобы придумать, как согнуть cpan2rpm использовать мой Perl и не вызывать конфликтов RPM.
Если бы мне пришлось делать все это снова, я бы сделал собственный RPM для Perl 5.10 и просто заменил системный Perl.Тогда я бы использовал cpan2rpm
чтобы создать пакеты RPM, необходимые для моего программного обеспечения, и скомпилировать свой собственный RPM mod_perl.