Deployment unter Linux

Status
Nicht offen für weitere Antworten.

Wolfgang Lenhard

Bekanntes Mitglied
Hi,
ich möchte eine Application (kommerziell) auf CD ausliefern. Die Application soll auch auf Linux startbar sein und ich habe sie unter Ubuntu entsprechend getestet. Für Windows habe ich Installer, aber ich weiß nicht so recht, wie das für Linux laufen soll. Genügt es, für Linux ein Archiv mit allen applikationsbezogenen Ressourcen und einem kleinen Shellskript beizulegen? Kann man von den Linux-Leuten erwarten, dass sie das Ding dann auf die Platte kopieren, entpacken und das Skript selbst starten können, oder gibt es schlauere Herangehensweisen? Das Shellskript hat eigentlich nur eine Zeile: java -jar application.jar (und das funktioniert auch). Kann ich erwarten, dass Linux-Leute in der Lage sind, selbst Java nachzuinstallieren, falls erforderlich? Dann gibt es ja auch noch die Notwendigkeit, Rechte zu setzen um das Skript starten zu können, oder? Kann ich hier den Anwendern bereits Arbeit abnehmen?

Webstart fällt leider aus, weil das Projekt viele Ressourcen enthält, die schlecht in ein jar zu packen sind und das Programm braucht Schreibzugriff (ich möchte nicht mit Zertifikaten hantieren). Auf Installationspackete wie InstallAnyWhere und AdvancedInstaller möchte ich verzichten, da ich diese extra erwerben müsste und das Projekt eine entsprechende Investition nicht hergibt.

Danke,
Wolfgang
 
Naja,
da für Dich die kommerziellen Produkte ausfallen, tät ich Dir in der Tat zu einem tar.gz raten, dass alles nötige beinhaltet und direkt über ein shell script startbar ist.

Ich denke mal, dass 90% der Linuxuser mit einem Archiv umgehen können und wenn nicht die Benutzer, dann die Tools des Verwendeten Window Managers.
 
Jo, und bei Gentoo sind es ebuilds und bei jeder anderen Distro wieder was anderes.
Einzige Gemeinsamkeit...die können Archive entpacken.
 
Bei unserem Produkt wird vom DAU ausgegangen. Wir liefern gleich die Linux-Distribution mit ;-) CD einlegen, enter drücken und 3 Fragen (IP, Username, ...) beantworten und schon hat man ein laufendes System..

Okay, wird für die meisten Anwendungen etwas zu viel Overhead sein ;-)

Würde aber die Anwendung für Linux fertig mit JRE (muss man ja nicht installieren, entpacken reicht ja) etc. auf der CD ausliefern und ein Setup-Shellscript beilegen die das Ding auf die Platte schaufelt und ggf. gleich mit der mitgleieferten JRE startet.

Das kann dann auchein Nicht-Linux'er bedienen. Im Handbuch steht dann nur noch ein Mini-Absatz wie das Script ausgeführt wird und fertig...

- Alex
 
Ah, ok. Eine einheitliche Installationsprozedur für verschiedene Linux-Distros gibt es demnach wohl nicht. Ein tar.gz mit einem darin beinhalteten Shell-Skript scheint es demnach tun zu müssen. Entsprechende Installer für eine JRE werde ich dann auf der CD beilegen.
Eine Frage noch: Für das Shell-Skript müssen vermutlich noch Rechte gesetzt werden, oder?

Merci!
 
lhein hat gesagt.:
Jo, und bei Gentoo sind es ebuilds und bei jeder anderen Distro wieder was anderes.
Ja, deshalb sucht man sich drei raus (RedHat, Debian und von mir aus noch Gentoo) dann hat man die meisten Systeme abgedeckt. Wie schaut es eigentlich bei Mandriva aus?

Entsprechende Installer für eine JRE werde ich dann auf der CD beilegen.
Würde ich keinesfalls tun. Ein Linux Anwender will keine Standardsoftware separat für Programm XY mitgeliefert bekommen. Alles was an Software gebraucht wird, wird über die Paketverwaltung installiert, sonst funktionieren keine automatischen Updates mehr.
Die saubere Lösung wäre daher Pakete für die Distibution(en) zu erstellen die du unterstützen willst, und die JRE als Abhängigkeit zu definieren. Das Betriebssystem kann dann dafür sorgen, das sie bei Bedarf nachinstalliert wird.
 
mandriva sollte immernoch rpm verwenden imho. zumindest war das noch so als es noch mandrake hieß
 
Auch kommerzielle Installer-Produkte haben für Linux meist nur 2 Varianten als Auswahl...ein Archiv oder ein Executable. Sich hier auf Distro-spezifische Pakete einzulassen ist ein nicht stemmbares Unterfangen. Und eine Beschränkung auf 3 Distros ärgert immer nur Benutzer von anderen Distros 🙂

Also...warum kompliziert, wenns auch einfach geht?

Und ja, ich würde dringend empfehlen, ein embedded JRE mitzuliefern und dieses zu verwenden. Ansonsten kann es schnell mal passieren, das man als Default JRE ein Blackhawk, IBM oder sonstewas Java vorfindet, dass dein Programm evtl. nicht so gut aussehen lässt wie das JRE auf dem Du es programmiert hast.
 
lhein hat gesagt.:
Auch kommerzielle Installer-Produkte haben für Linux meist nur 2 Varianten als Auswahl...ein Archiv oder ein Executable. Sich hier auf Distro-spezifische Pakete einzulassen ist ein nicht stemmbares Unterfangen. Und eine Beschränkung auf 3 Distros ärgert immer nur Benutzer von anderen Distros 🙂

Also...warum kompliziert, wenns auch einfach geht?

Und ja, ich würde dringend empfehlen, ein embedded JRE mitzuliefern und dieses zu verwenden. Ansonsten kann es schnell mal passieren, das man als Default JRE ein Blackhawk, IBM oder sonstewas Java vorfindet, dass dein Programm evtl. nicht so gut aussehen lässt wie das JRE auf dem Du es programmiert hast.

Genau meine Rede. Die JRE mit auf die CD packen und ein Script bereit stellen das alles auf die Platte schiebt und ggf. Startfiles anpasst/erstellt (falls es sich um eine Anwendung handelt die bei Systemstart gleich laufen muss).
Nebenbei: Wenn die eigene Anwendung Java 6 braucht und jmd. sein System mit Java 5 fährt, weil er noch andere Anwendungen hat die zwingend eine JAVA 5 Update XYZ Version brauchen?! Was dann? Ich würde die benötigte JRE "embedded" mitliefern und auch genau diese dann starten. So ist man unabhängig von anderen, verliert jedoch evtl. einen schicken Updatemechanismus für die JVM vom OS ...Naja, einen Tod muss man schließlich sterben ;-)

- Alex
 
In einem Firmennetzwerk kann man dem Nutzer der SW schon mal ein eigenes JRE aufspielen/aufzwingen, auf dem freien Markt ist so etwas imho ein no-go, auf meiner Kiste installiere nur ich Java 😉
 
@maki:

Dieses Java wird nicht "installiert" sondern existiert nur als Unterverzeichnis in deinem Produktverzeichnis.
Keinerlei Installation in andere Verzeichnisse....daher embedded.

Und "no-go" im freien Markt ist Quatsch. Wir machen das für einige Produkte so und das wird bisher durchweg vom Kunden akzeptiert.
 
Hm, nun ja. Ich erinnere mich vage, dass Sun irgendwann einmal empfohlen hat, private JREs zu vermeiden, da diese bei Updates nicht berücksichtigt werden und im Falle von Sicherheitslücken den Rechner kompromittieren könnten. Klar, dass es sehr komfortabel ist, eine private JRE stillschweigend mitzuliefern und der User dann nichts von der JRE mitkriegt. Ich bin bei meinen Windows-Installern dazu übergegangen, Java als optionale Komponente im Installationsprozess anwählbar zu machen und es dem Installer zu überlassen, das System auf Aktualität einer ggf. bereits systemweit installierten JRE zu prüfen. Ich vermute mal, Sun kann das besser implementieren als ich.
Wenn ein User kein Java installiert hat und auch beim Installer abgewählt hat, dann erscheint ein entsprechender Hinweis beim Starten des Programms (exe-Wrapper mit JRE-Check, der dann das nicht eingebettete jar aufruft). Auf diese Weise vermeidet man das "Gefummel" mit privaten JREs und nebenbei wird die Platte auch nicht mit x Java-JREs zugemüllt.
Der Weisheit letzter Schluss ist das alles zugegebenermaßen aber noch nicht.
 
@Wolfgang

Ja, das Update der JRE durch SUN macht in vielen Fällen Sinn.
Aber es gibt auch durchaus Fälle, da will man nicht jedem Update hinterher rennen was man nicht selbst getestet hat, ob die eigene Anwendung dann noch sauber läuft.

Unsere Anwendung in der Firma hier ist z.B. nur für Java 6 update 3 freigegeben. Und die JRE wird auch "embedded" mitgeliefert.

Ist einfach etwas tricky alle Java Anwendungen auf einem Rechner über einen Kamm zu scheren und mit einer einzigen JRE laufen zu lassen. Manche Anwendungen haben eben ihre Eigenart und laufen nicht mit jeder beliebig aktualisierten JVM.

Man muss eben selbst abwägen ob man seine eigene Anwendung durch eine nicht selbst getestete JVM beeinflussen lassen will oder nicht.

- Alex
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben