2009-03-04 13 views
1

Auf Windows-Anwendungen sind in der Regel als MSI verpackt, auf Redhat Linux als RPM, was wäre eine beste Open-Source-Methode, die zum Bereitstellen von Anwendungen auf allen Plattformen einschließlich verschiedener Varianten von Unix und Windows verwendet werden könnte?Paketierung für plattformübergreifende Bereitstellung?

Der Inhalt würde Exes, Unix-Binärdateien, Java-JAR-Dateien, Benutzerdaten, sogar Datenbankskripts enthalten, die ausgeführt werden.

(erkenne ich Inhalt pro Ziel-OS variieren würde, dh. Binärdateien anders sein würde, gewinnen exe vs Unix binär etc, aber zum Beispiel Konfigurationsdateien können gleich oder im Fall von Java sein, auch die Bytecode-Gläser)

Hauptfeature Ich möchte, dass die Verpackung verschiedene Benutzer und Berechtigungen für verschiedene Verzeichnisse unterstützt, aber ich erkenne, dass die Unterstützung dieser Feature-Multiplattform sehr schwierig sein kann.

Antwort

1

Ich habe einen Client, der IzPack verwendet, um ein einzelnes Installationsprogramm zu erstellen (es ist Java-basiert), das ihre Anwendung unter Windows, OS X und Linux installiert.

http://izpack.org/

+0

Das sieht sehr gut aus, aber teuer. Alles so, aber kostenlos? –

+0

Ich habe keine Ahnung. Ich hatte erst im letzten Monat von IzPack gehört. Ich erstelle immer separate Installer für jede Plattform. –

+2

Teuer? Es ist lizenzierte Apache 2.0: -? – richq

5

Anstatt ein Paket zu erstellen, das auf all Ihren Plattformen funktionieren soll, was wahrscheinlich unmöglich ist, sollten Sie Ihr Build-System verschiedene Pakete für jede Zielplattform erstellen lassen.

+0

Wenn dies wirklich unmöglich ist, muss ich den Ansatz folgen, den Sie empfehlen. Aber ich hoffe immer noch, dass 1 Lösung auch für alle passt. –

+0

Ich bin wahrscheinlich falsch, dass es unmöglich ist, aber ich denke, dass Best Practices wahrscheinlich vorschlagen, dass Sie plattformspezifische Pakete erstellen. – RibaldEddie

+0

Ich stimme RibaldEddie zu. Die Installation von Software ist meiner Meinung nach eine Systemoperation. Die Verwendung der vorherrschenden Methoden auf dem jeweiligen System scheint der beste Weg zu sein, wenn Sie dem Kunden oder Administrator die geringste Überraschung bieten möchten. –

1

NSIS ist eine Open-Source-Lösung, die, soweit ich weiß, in der Lage ist, Installer zu erstellen, die sowohl unter Windows als auch unter UNIX laufen. Für die Softwareimplementierung unter Windows (insbesondere in Unternehmensumgebungen) ist MSI der richtige Weg, und NSIS bereitet mehr Kopfzerbrechen.

Also würde ich nicht empfehlen, dass Sie versuchen, ein einzelnes Paket/Installer für verschiedene Plattformen zu erstellen. Aber, wie RibaldEddie anmerkte, mehrere Pakete: eins für jede Plattform. Dadurch kann auch der Inhalt des Pakets auf die für die jeweilige Plattform relevanten Dateien beschränkt werden.

0

Wenn Sie möchten, dass Verpackungen für mehrere Distributionen unterstützen, würde ich vorschlagen, die Verpacker für diese Verteilungen aushelfen; Verwenden Sie eine Art von bekannten Build-System für Ihre Software (GNU autotools oder so etwas wie scons oder waf), und dokumentieren Sie die Build, optionale Abhängigkeiten und so weiter ziemlich gut.

So, wenn ein Debian, Ubuntu, Red Hat, SuSE, was auch immer, Packager kommt, werden sie in der Lage sein, das Paket für Sie zu erstellen. Sie können optional Verpackungsvorlagen für eine oder mehrere Verteilungen in einer separaten VCS-Struktur einfügen, die verfügbar ist, wenn Sie möchten.

Wenn Sie eine geschlossene/proprietäre Anwendung für mehrere Systeme packen, sollten Sie eine .tar.gz-Datei am besten zusammenpacken und den Installationsprozess dafür dokumentieren. Sie sollten auch sicherstellen, dass der verwendete Build-Prozess keine Pfadinformationen in die Anwendung einbindet, so dass sie in /opt, /usr oder /usr/local ausgeführt werden können. Dies sind einige beliebte Optionen für Add-Ons von Drittanbietern Software.

2

Mit CPack (Es mit CMake kommen) können Sie Pakete für Windows (mit NSIS), Linux (rpm und deb) und OS X mit "make package" erstellen. CMake vereinfacht auch das plattformübergreifende Bauen.

Für eine Probe Sie bei Avogadroschen aussehen kann CMakeLists.txt und AvoCPack.cmake

0

BitRock InstallBuilder können Sie Installationspakete für jede der Plattformen, die Sie erwähnt (sowie das Erstellen von RPM, DEB, Pakete usw. von einem einzigen Projekt erstellen Datei)