Кажется, что большинство установщиков Perl сосредоточено на установке модулей Perl, а не приложений. Такие вещи, как ExtUtils :: MakeMaker и Module :: Build, очень хорошо подходят для модулей, но требуют дополнительной работы для веб-приложений.
В идеале было бы неплохо иметь возможность делать следующее после извлечения источника из репозитория:
Прямо сейчас у нас есть система, основанная на Модуль :: Сборка, которая делает большую часть этого. Работа была проделана моим коллегой, который в то время учился использовать Модуль :: Сборка, и мы хотели бы получить несколько советов по обобщению нашего решения, поскольку сейчас оно в значительной степени зависит от приложения. В частности, наша система требует, чтобы мы устанавливали зависимости вручную (хотя она их обнаруживает).
Есть ли какая-то конкретная система, которую вы использовали, которая была особенно успешной? Нужно ли вам писать установщик на основе Модуль :: Сборка или ExtUtils :: MakeMaker, специфичный для вашего приложения, или доступно что-то более общее?
Обновлено: Чтобы ответить на вопросы Брайана ниже:





Я бы порекомендовал серьезно подумать о системе пакетов, такой как RPM, чтобы сделать это. Даже если вы работаете в Windows, я бы рассмотрел RPM и cygwin для установки. Вы даже можете настроить репозиторий yum или apt для доставки пакетов в удаленные системы.
Если вы ищете общий установщик для клиентов, использующих любое количество ОС и дистрибутивов, проблема становится намного сложнее.
Ответ, предполагающий, что RPM, определенно хороший. Использование менеджера пакетов вашей системы определенно может облегчить вашу жизнь. Однако это может означать, что вам также необходимо упаковать кучу других модулей Perl.
Вы также можете взглянуть на Кораблестроитель. Это основанный на Perl инструмент для упаковки приложения и всех его зависимостей модуля Perl. Пока еще рано, но все выглядит многообещающе.
Что касается установки зависимостей, было бы несложно просто упаковать кучу tar-архивов, а затем установить их с помощью решения на основе Module :: Build. Вам следует взглянуть на пип, который делает установку модуля из архива довольно тривиальной. Вы можете упаковать это в свою базу кода и просто вызвать его из своего установщика для обработки deps.
Я сомневаюсь, что полагаться на CPAN - это хорошая идея. Оболочка CPAN всегда выбирает последнюю версию дистрибутива, а не конкретную версию. Если вы заинтересованы в обеспечении повторяемости установок, это неподходящий инструмент.
Каковы ваши ограничения на установку веб-приложений? Вы можете войти в машину? Все ли машины работают на одном и том же? Люди, устанавливающие веб-приложения, коллеги или случайные люди из широкой публики? Люди устанавливают это сисадмины, программисты, веб-менеджеры или что-то еще? Вы выполняете установку путем распространения архива или извлечения из системы контроля версий?
Для большей части моих работ, в которых задействованы системные администраторы, знакомые с установкой Perl в управляющих средах, я просто использую MakeMaker. Если вы немного знаете о MakeMaker, то легко заставить его выполнять все перечисленные вами функции. Если вы хотите узнать об этом больше, задайте другой вопрос. ;) Модуль :: Сборка, однако, так же прост, и это правильный путь, если вам еще не нравится использовать MakeMaker.
Module::Build был бы хорошим способом справиться с множеством различных ситуаций, если люди в меру осведомлены о командной строке и установке программного обеспечения. У вас будет большая гибкость с Module::Build, но также и немного больше работы. А инструмент cpan (который поставляется с Perl) может устанавливать из текущего каталога и обрабатывать зависимости за вас. Просто скажите ему установить текущий каталог:
$ cpan .
Если вам нужно установить только на одну платформу, вам, вероятно, будет легче создать пакет в собственном формате. Вы даже можете попросить Module::Build сделать этот пакет за вас, чтобы разработчики имели гибкость Module::Build, но установщики получили простоту собственного процесса. Использование Module::Build также означает, что вы можете создавать разные пакеты для разных платформ с помощью одного инструмента сборки.
Если люди, устанавливающие веб-приложение, действительно не имеют представления о командных строках, CPAN и других вещах, вы, вероятно, захотите использовать упаковщик и установщик, который не пугает их и не заставляет думать о том, что происходит, и может точно сообщать вам о проблемах автоматически.
Как указывает Дейв, использование настоящего зеркала CPAN всегда дает вам последнюю версию модуля, но вы также можете создать свое собственное «поддельное» зеркало CPAN с точно теми дистрибутивами, которые вам нужны, и установить из него обычные инструменты CPAN. Для наших клиентов мы делаем «CPAN на компакт-диске» (хотя флеш-накопители сейчас тоже хороши). С помощью простого сценария «запустите меня» все будет установлено именно в тех версиях, которые им нужны. См., Например, мой доклад «Как сделать мой собственный CPAN», если вам это интересно. Опять же, думая об этом, обратите внимание на аудиторию. Это не то, что вы могли бы передать широкой публике.
Удачи, :)
Взгляните на PAR.
Джонатан Роквей в качестве небольшого раздела об использовании этого с Catalyst в своей книге.