Лучший подход к написанию универсального установщика для приложения Linux?

У нас есть серверное приложение Linux, которое состоит из ряда инструментов с открытым исходным кодом, а также программ, которые мы написали сами. В идеале мы хотели бы иметь возможность установить это приложение на любой распространенный дистрибутив Linux.

В прошлом мы писали сценарии Perl для автоматизации установки этого приложения. К сожалению, из-за особенностей различных дистрибутивов Linux логика внутри этих сценариев установки становится ужасно сложной и может меняться по мере выпуска новых версий каждого поддерживаемого дистрибутива. Таким образом, поддержка установщика становится одной из самых трудоемких частей проекта!

Мне нужна помощь, будь то фреймворк, документация, образцы кода, которые могут сделать этот процесс менее болезненным. Вот что нужно сделать нашему установщику:

  • Создание учетных записей пользователей / групп

  • Создавайте деревья каталогов с определенными владельцами и разрешениями

  • Устанавливать приложения с открытым исходным кодом, потенциально компилируя их из исходного кода во время установки.

  • Вставляйте предварительно скомпилированные двоичные файлы, сценарии, файлы конфигурации и документы в определенные каталоги

  • Зарегистрируйте скрипты запуска и выключения типа init

  • Сгенерировать ключи шифрования

  • Проверить подключение к центральному серверу


person Nack    schedule 31.10.2008    source источник


Ответы (5)


Вместо подхода установщика, я думаю, лучший способ, чем использование одного сценария, который выполняет это во время установки, - это иметь систему сборки, которая генерирует файлы .deb или .rpm, подходящие для установки в каждой системе, которую вы должны поддерживать.

Для бедняков в этом случае может быть использование checkinstall, которое создает пакеты из файлов, установленных с помощью make install. Таким образом, вы должны создать свое приложение в каждой системе и волшебным образом создать пакет в собственном формате дистрибутива.

person Vinko Vrsalovic    schedule 31.10.2008

Я считаю, что большинство описываемых вами задач достаточно стандартизированы для разных дистрибутивов Linux. По моему опыту, следующее должно работать с семейством Debian (включая Ubuntu) и семейством Red Hat (включая Fedora и CentOS):

  • Создание учетных записей пользователей / групп - команда adduser
  • Создайте деревья каталогов - mkdir или install, или просто разверните архив
  • Установите приложения с открытым исходным кодом - если у вас нет особых эзотерических потребностей, это, вероятно, следует оставить на усмотрение диспетчера пакетов дистрибутива.
  • Установить файлы - install или просто развернуть архив
  • Сценарии запуска и выключения - с install на /etc/init.d, затем символическая ссылка на /etc/rc*.d

VMware Server бесплатно доступен для Linux и выполняет большинство описанных вами задач. Он использует Perl и, возможно, оболочку для его установки и настройки, поэтому вы можете увидеть подход, который он использует.

Однако, как администратор Linux, я настоятельно предпочитаю приложения, которые интегрируются с моей системой управления пакетами. Другими словами, создавайте файлы .deb и .rpm, как предлагал Винко Врсалович. Сборка пакетов очень хорошо документирована:

person Josh Kelley    schedule 05.11.2008

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

Хотя, вероятно, среди дистрибутивов Linux все еще слишком много разнообразия, чтобы делать все полностью независимым от платформы способом, но я могу ошибаться.

person macbirdie    schedule 31.10.2008

Вы можете попробовать BitRock InstallBuilder. Это кроссплатформенный инструмент установки, который позволяет вам делать именно то, что вы ищете (добавлять пользователей, устанавливать службы, устанавливать предварительно скомпилированные двоичные файлы и т. Д.). Хотя в некоторых других сообщениях упоминается ряд инструментов, которые вы могли бы использовать в своих сценариях, проблема в том, что каждый дистрибутив Linux немного отличается, и простые задачи, такие как добавление пользователя или установщика службы, внезапно становятся нетривиальными, когда вам нужно выполняйте их в Debian, Ubuntu, Mandriva, RedHat, Gentoo и т. д. Хороший межплатформенный установщик должен изолировать вас от всего этого. Многие коммерческие компании с открытым исходным кодом, такие как MySQL, SugarCRM, Zenoss, Jaspersoft, Groundwork и т. Д., Создали установщики на основе наша технология именно из-за этого (в дополнение к их обычным тарболам с исходным кодом и т. д.). Мы также предоставляем бесплатные лицензии для проектов с открытым исходным кодом.

person Daniel Lopez    schedule 18.01.2009

Автопакет теперь объединен с проектом Listaller. Документация еще не очень тщательная, но, похоже, работает.

person StackHola    schedule 26.09.2012