Как мне улучшить процесс развертывания приложений perl?

Я разрабатываю и поддерживаю набор приложений для биоинформатики из 50+ сценариев, а процесс его развертывания - беспорядок:

  • Весь пакет находится в одном большом репозитории git. Он имеет множество зависимостей CPAN и десятки внутренних модулей.
  • Платформа разработки - Linux.
  • Платформы развертывания - это Windows (20+ пользователей), Mac (10+), Linux (2-3). Большинство из них не являются "властными пользователями".
  • Для окон у меня есть один инсталлятор (сделанный с NSIS) для клубника perl + требуемых модулей (т.е. я установил клубнику на окно, установил все модули и застегнул c:\strawberry), а другой установщик для пакета - - Я сделал это b/c, пакет обновлен намного больше, чем список необходимых модулей.
  • Для Mac я собираю perl 5.14, все необходимые модули cpan и набор приложений в установщик с двойным щелчком. Я не использую систему perl b/c, она имеет тенденцию устаревать. Я собираю все вместе, в отличие от окон b/c. Я сосать на mac.
  • Для Linux я обрабатываю их установки вручную, так как их только несколько, и они используют разные дистрибутивы.

Это, очевидно, беспорядок, который органично развивался над несколькими поколениями разработчиков. В идеале я хотел бы создавать дистрибутивы cpan-installable из внутренних библиотек и различных групп связанных скриптов и использовать зависимости модулей, чтобы позволить cpan установить их для меня.

Но я не уверен, какой лучший подход для этого, b/c мне все равно нужно будет распространять perl, нужно было бы написать какой-то интерфейс без командной строки для CPAN, контролировать точные версии Сторонних модулей CPAN, по умолчанию укажите его на "DarkPan", где я буду хранить наши модули, как я буду нажимать обновления и т.д. И т.д.

Я не думаю, что могу использовать PerlApp или Par с тех пор, как afaik это для объединения одиночных скриптов, а не из всего набора.

Любой совет высоко ценится.

Ответ 1

Помимо упомянутых 3-х платформ (более того, если вы считаете варианты Linux), у вас действительно есть пара различных проблем:

  • Развертывание стандартного хорошо известного исполняемого файла Perl и библиотек (модулей CPAN).
  • Развертывание ваших скриптов и модулей Perl.

Когда-то я поддерживал большую установку Solaris Perl. Я пытался некоторое время встать на Linux Perl-установку "бок о бок", повторно используя те же модули CPAN. Не работает. Большая проблема для меня в том, что для большого количества модулей Perl требуется компиляция, а это означает, что они нацелены на определенную платформу. Я закончил с двумя установками и всегда помнил, что должен установить новый модуль CPAN в обеих областях.

Сейчас мы 100% Windows, поэтому у меня нет такой же проблемы. Однако мы запускаем Perl с общего сетевого диска. Все пользователи сопоставляют этот диск и запускают реестр script, который связывает файлы .PL с сетевой установкой Perl. (См. Мой ответ на этот другой вопрос Perl.)

Итак, помимо подключенного диска и реестра script, пользователям не нужно ничего устанавливать. Даже модули CPAN извлекаются из сети. Это разрешает пункт № 1 (для пользователей только для Windows).

То же самое верно для элемента № 2: сценарии хранятся на сетевом диске (тот же самый), а пользователи запускают другой Registry script, чтобы включить папку сценариев в свой PATH поиска. Мы редактируем наши скрипты в одной области и имеем "Check-In 'n Release" ( "CINR" ), которые мы используем для того, чтобы, а также проверять и выпускать скрипты в область, на которую указывают пользователи. Пользователи могут дважды щелкнуть по сценариям в Проводнике, запустить их в DOS или даже еще лучше включить их в контекстное меню в Проводнике и т.д. (На самом деле мы используем приложение .NET для сопоставления диска и делаем все это настройки для пользователя, но это можно сделать гораздо проще.)


Итак, как это помогает с другими платформами, Linux и Mac? Когда я столкнулся с моим экспериментом Solaris/Linux, я думаю, что вы застряли с другой установкой Perl для всех трех платформ, хотя вы должны иметь возможность достичь того же сетевого диска для своих скриптов и модулей Perl.

Установка на Perl может быть даже на сетевом диске для пользователей Linux. Это, вероятно, проще для них, чем для пользователей Windows. Пользователи Mac жесткие. Я управляю домашней сетью Mac, и я думаю, что сетевые диски очень сложно сделать в Mac OS X по сравнению с другими ОС. Это должно быть так же просто, как в Linux, так как все одинаково, но есть очень странные проблемы (для меня), отображающие диски NFS и SMB. Приводы AFP немного легче для пользователя, чтобы отображать их вручную, но не так легко отображать программно.

Рекомендация Mac Mac - попытаться использовать Platypus. Это определенно отлично подходит для добавления скриптов в приложение с двойным щелчком, хотя ваши параметры интерфейса ограничены только выходом (во время выполнения я могу сказать, что пользовательский ввод не разрешен). Не уверен, что вы могли бы поместить всю установку Perl в приложение Platypus или нет, но если бы вы могли определить пути, вы могли бы это сделать.

Удачи!

Ответ 2

Возможно, вы захотите проверить упаковщик CAVA. Он может обрабатывать несколько сценариев в одном пакете.