Лучший подход к написанию универсального установщика для приложения Linux? - PullRequest
8 голосов
/ 31 октября 2008

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

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

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

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

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

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

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

  • Регистрация сценариев запуска и завершения типа init

  • Генерация ключей шифрования

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

Ответы [ 5 ]

9 голосов
/ 31 октября 2008

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

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

2 голосов
/ 05 ноября 2008

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

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

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

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

1 голос
/ 18 января 2009

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

1 голос
/ 31 октября 2008

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

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

0 голосов
/ 26 сентября 2012

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

...