2008-10-31 4 views
8

Wir haben eine Linux-Server-Anwendung, die aus einer Reihe von Open-Source-Tools besteht, sowie von Programmen, die wir selbst geschrieben haben. Idealerweise möchten wir diese Anwendung auf jeder gängigen Linux-Distribution installieren können.Der beste Weg, um ein generisches Installationsprogramm für eine Linux-Anwendung zu schreiben?

In der Vergangenheit haben wir Perl-Skripts geschrieben, um die Installation dieser Anwendung zu automatisieren. Leider ist die Logik in diesen Installationsskripten aufgrund von Eigenheiten verschiedener Linux-Distributionen entsetzlich komplex und kann sich ändern, wenn neue Versionen jeder unterstützten Distribution veröffentlicht werden. Die Wartung des Installers wird somit zu einem der zeitintensivsten Teile des Projekts!

Ich suche Unterstützung, sei es ein Framework, Dokumentation, Code-Beispiele, die diesen Prozess weniger schmerzhaft machen können. Hier sind die Arten von Dingen unser Installateur tun muss:

  • Benutzer/Gruppenkonten

  • Verzeichnisbäume erstellen mit bestimmten Eigentümer und Berechtigungen

  • installieren Open-Source-Anwendungen, die möglicherweise Kompilierung sie von der Quelle während der Installation

  • Vorkompilierte Binärdateien, Skripts, Konfigurationsdateien und Dokumente in bestimmte Verzeichnisse einfügen

  • Register init-Typ Start-und Shutdown-Skripte

  • generieren Verschlüsselungsschlüssel

  • Überprüfen Sie die Konnektivität zu einem zentralen Server

Antwort

9

Anstelle des Installer-Ansatzes halte ich einen besseren Weg, als ein einzelnes Skript zur Installationszeit zu verwenden, ein Build-System, das .deb- oder .rpm-Dateien zur Installation auf jedem zu unterstützenden System erzeugt .

Ein armer Mann Weg zu gehen, könnte zu verwenden checkinstall, die Pakete aus den Dateien erstellt über 'make install'. Also würden Sie Ihre App auf jedem System erstellen und das Paket magisch im nativen Format der Distro erstellen lassen.

1

ich vor Autopackage ein paar Jahren versucht, weiß nicht, Wie universell es ist, hat aber recht gut funktioniert (war damals der einzig wirklich universelle Weg). Sicherlich müssen Sie einige LSB-kompatible Möglichkeiten bereitstellen, eigene Verzeichnisse selbst einzurichten, aber diese Software sollte Ihnen helfen.

Obwohl es wahrscheinlich immer noch zu viel Vielfalt unter Linux-Distributionen zu tun alles in einer völlig plattformunabhängigen Art und Weise, aber ich kann falsch liegen.

2

Ich glaube, dass die meisten Aufgaben, die Sie beschreiben, zwischen Linux-Distributionen ziemlich standardisiert sind.Nach meiner Erfahrung sollte Folgendes in die Debian-Familie (einschließlich Ubuntu) arbeiten und die Red Hat-Familie (einschließlich Fedora und CentOS):

  • erstellen Benutzer/Gruppe-Konten - adduser Befehl
  • Verzeichnisbäume erstellen - mkdir oder install, oder erweitern Sie einfach einen Tarball
  • Installieren Sie Open-Source-Anwendungen - Sofern Sie nicht besonders esoterische Bedürfnisse haben, sollte dies wahrscheinlich der Paketmanager der Distro verlassen werden.
  • Installieren Sie Dateien - install oder erweitern nur einen Tarball
  • Startup und Shutdown-Skripte - install-/etc/init.d dann /etc/rc*.d

VMware Server Symlink ist frei für Linux verfügbar und hat die meisten der Aufgaben, die Sie beschreiben, . Es verwendet Perl und vielleicht Shell für seine Installation und Konfiguration, so dass Sie vielleicht den Ansatz sehen, den es braucht.

Allerdings, als Linux-Administrator, ich stark bevorzugen Anwendungen, die mit meinem Paket-Management-System integrieren. Mit anderen Worten, erstellen Sie .deb- und .rpm-Dateien, wie Vinko Vrsalovic vorgeschlagen hat. Erstellen von Paketen ist sehr gut dokumentiert:

1

Sie können möchte versuchen BitRock InstallBuilder. Es ist ein plattformübergreifendes Installationswerkzeug, mit dem Sie genau das tun können, wonach Sie suchen (Hinzufügen von Benutzern, Installieren von Diensten, Installieren vorkompilierter Binärdateien usw.). Obwohl einige der anderen Beiträge eine Reihe von Werkzeugen erwähnen, die Sie in Ihren Skripten verwenden könnten, ist das Problem, dass jede Linux-Distribution ein bisschen anders ist und einfache Aufgaben, wie das Hinzufügen eines Benutzers oder Installers, plötzlich überflüssig sind Mach sie über Debian, Ubuntu, Mandriva, RedHat, Gentoo, etc. Ein guter plattformübergreifender Installer sollte dich von all dem isolieren. Viele commercial open source companies wie MySQL, SugarCRM, Zenoss, Jaspersoft, Groundwork usw. haben aufgrund unserer Technologie Installer auf Basis unserer Technologie gebaut (zusätzlich zu ihren regulären Quellcode-Tarballs usw.). Wir bieten auch kostenlose Lizenzen für Open-Source-Projekte.

0

Autopaket jetzt mit dem Listaller-Projekt zusammengeführt. Die Dokumentation ist noch nicht wirklich gründlich, scheint aber zu funktionieren.