Какая лучшая система для установки веб-приложения Perl?

Похоже, что большинство инсталляторов Perl сосредоточены на установке модулей Perl, а не приложений. Такие вещи, как ExtUtils:: MakeMaker и Module:: Build, очень хорошо подходят для модулей, но требуют дополнительной работы для веб-приложений.

В идеале было бы неплохо сделать следующее после проверки источника из репозитория:

  • Обнаружены обнаруженные недостатки
  • Загрузка и установка зависимостей от CPAN
  • Запустите команду "Построить" источник в конечное состояние (выполните любой синтаксический анализ или конфигурацию, необходимые для локальной среды).
  • Запустите команду для установки встроенных файлов в соответствующие местоположения. Не только модули perl, но также такие вещи, как файлы шаблонов (.tt) и скрипты CGI, JS и файлы изображений, которые должны быть доступны для веб-сайта.
  • Убедитесь, что для установленных файлов заданы правильные разрешения (и, при необходимости, контекст SELinux).

Сейчас у нас есть система, основанная на Module:: Build, которая делает большую часть этого. Работа была выполнена моим коллегой, который в то время учился использовать Module:: Build, и мы хотели бы получить некоторые рекомендации по обобщению нашего решения, поскольку это довольно справедливо для приложения Теперь. В частности, наша система требует от нас устанавливать зависимости вручную (хотя и обнаруживает их).

Есть ли какая-то конкретная система, которая вы использовали, которая была особенно успешной? Вам нужно написать установщик на основе Module:: Build или ExtUtils:: MakeMaker, что особенно важно для вашего приложения, или что-то более общее доступно?

РЕДАКТИРОВАТЬ: Чтобы ответить на следующие вопросы Брайана:

  • Мы можем войти в машины
  • У нас нет доступа root к машинам
  • Все машины (якобы) идентичные сборки RHEL5 с включенным SELinux.
  • В настоящее время люди, устанавливающие компьютеры, являются только программистами из нашей группы, и наш источник недоступен для широкой публики. Однако, возможно, наш источник в конечном итоге может быть установлен на других машинах нашей организации, которые будут установлены их программистами или людьми системы.
  • Мы устанавливаем, выбирая из репозитория, хотя мы хотели бы иметь возможность использовать распределенный архив (см. выше).

Ответ 1

Каковы ваши ограничения для установки веб-приложений? Можете ли вы войти в машину? Все машины работают одинаково? Являются ли люди, устанавливающие сотрудников веб-приложений или случайных людей из широкой общественности? Являются ли люди, устанавливающие этих системных администраторов, программистов, веб-менеджеров или что-то еще? Вы устанавливаете, распределяя архив или проверяя исходный контроль?

Для большинства моих вещей, в которых задействованы администраторы, знакомые с установкой Perl в средах управления, я просто использую MakeMaker. Легко заставить его делать все перечисленные вами вещи, если вы немного знаете о MakeMaker. Если вы хотите узнать больше об этом, задайте другой вопрос.;) Module:: Build так же просто, как и путь, если вам уже не нравится использовать MakeMaker.

Module::Build был бы хорошим способом справиться с множеством различных ситуаций, если люди будут смиренно говорить о командной строке и установке программного обеспечения. У вас будет большая гибкость с Module::Build, но также немного больше работы. И инструмент cpan (который поставляется с Perl), может быть установлен из текущего каталога и обрабатывать зависимости для вас. Просто скажите, чтобы установить текущий каталог:

 $ cpan .

Если вам нужно установить только одну платочку, вам, вероятно, будет легче сделать пакет в собственном формате. Вы даже можете сделать Module::Build этот пакет для вас, чтобы разработчики имели гибкость Module::Build, но у установщиков есть простота собственного процесса. Приклеивание с помощью Module::Build также означает, что вы можете создавать разные пакеты для разных платформ из одного инструмента сборки.

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

Как указывает Дэйв, использование реального зеркала CPAN всегда дает вам последнюю версию модуля, но вы также можете сделать свое собственное "поддельное" зеркало CPAN с точно такими же дистрибутивами и установить обычные инструменты CPAN из этого, Для наших клиентов мы создаем "CPAN на компакт-диске" (хотя приводы большого пальца тоже хороши). С помощью простого "run me" script все устанавливается именно в нужные им версии. См. Например, мой http://www.slideshare.net/brian_d_foy/mycpan-lapm-september-2007" > Создание моей собственной беседы CPAN, если вы этого заинтересованы. Опять же, рассмотрите аудиторию, когда вы думаете об этом Это не то, что вы передадите широкой публике.

Удачи,:)

Ответ 2

Ответ, предлагающий RPM, определенно хороший. Использование диспетчера системных пакетов может сделать вашу жизнь проще. Однако это может означать, что вам также необходимо собрать пакет других модулей Perl.

Вы также можете взглянуть на Shipwright. Это Perl-инструмент для упаковки приложения и всех его зависимостей модулей Perl. Это еще рано, но выглядит многообещающим.

Что касается установки зависимостей, было бы нелегко просто собрать пакет tarballs, а затем установить решение на основе Module:: Build. Вы должны взглянуть на pip, что делает установку модуля из tarball довольно тривиальной. Вы можете скомпоновать это с базой кода и просто вызвать его из своего собственного установщика для обработки депо.

Я сомневаюсь, стоит ли полагаться на CPAN. Среда CPAN всегда извлекает последнюю версию дистрибутива, а не конкретную версию. Если вы заинтересованы в обеспечении повторяющихся установок, это не правильный инструмент.

Ответ 3

Я бы рекомендовал серьезно рассмотреть систему пакетов, такую ​​как RPM, для этого. Даже если вы работаете в Windows, я бы рассмотрел RPM и cygwin для установки. Вы даже можете настроить репозиторий yum или apt для доставки пакетов в удаленные системы.

Если вы ищете универсальный установщик для клиентов, работающих с любым количеством ОС и дистрибутивов, проблема становится намного сложнее.

Ответ 4

Взгляните на PAR.

Джонатан Роквей как небольшой раздел об использовании этого с Катализатором в его книге.