PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Software Distribution unter Unix-Systemen


Ectoplasma
2008-12-01, 16:24:29
Hallo,

ich möchte eine Software, die ich unter Windows entwickelt habe, auf diversen Unix-Systemen portieren und zur Verfügung stellen. Unter Windows ist eine Distribution ziemlich einfach zu machen. Man hat ein oder meherere Binaries und das war es auch schon. Diese laufen auf allen Windows-Plattformen.

Wie erstellt man nun eine Software-Distribution für Unix-Systeme? Dort gibt es ja diverse Anbieter, die verschiedene Versionen und diese dann noch für verschiedene Plattformen anbieten. Muss ich jetzt Binaries für z.B. jede Linux Version erzeugen, oder gibt es für sowetwas ein Zwischenformat, welches dann nur compiliert werden muss. Den C++ Quellcode möchte ich jedenfalls nicht herausrücken. Gibt es da eine Lösung? Vielen Dank schonmal für eure Antworten.

Captian Sheridan
2008-12-01, 17:24:12
Hallo,
Wie erstellt man nun eine Software-Distribution für Unix-Systeme? Dort gibt es ja diverse Anbieter, die verschiedene Versionen und diese dann noch für verschiedene Plattformen anbieten. Muss ich jetzt Binaries für z.B. jede Linux Version erzeugen, oder gibt es für sowetwas ein Zwischenformat, welches dann nur compiliert werden muss. Den C++ Quellcode möchte ich jedenfalls nicht herausrücken. Gibt es da eine Lösung? Vielen Dank schonmal für eure Antworten.
ein Zwischenformat ist mir nicht bekannt.

Cmake und konsorten vereinfachen den Build-prozess an sich.

Der LSB-Standard kann für einfache Anwendungen ausreichen.

wie komplex ist das Programm ? welche Dependencies ?

normalerweise werden Apps in die Repositories der Distro bei hinreichenden Interesse aufgenommen, ohne Quellcode unter Einschränkungen(Treiber).

Dem Entwicklern von Foss ist die Distribution ihrer Software meistens egal.

Ich bezweifele, dass du genauso viele architecture bedienen kannst wie z.B Alioth(Debian).

openSUSE Build Service baut auch Packete für mehrere Distros (nur x86) , keine Ahnung, ob der Quellcode offen gelegt werden muss.

Autopackage könnte eine Lösung sein, hab ich selber nicht getestet.

PHuV
2008-12-01, 17:37:45
Was meinst Du mit Unix? Nur Linux allein ist an sich kein Unix, Unix ist AIX, Solaris, HPUX etc. Hier muß man wirklich von jeder Plattform eine laufende Maschine + Compiler haben, und es müssen die entsprechenden korrekten Zusatzprogramme wie libs etc. vorhanden sein. Gerade hier muß man sehr sauber dokumentieren und exakt beschreiben, mit welchen Programmen etc. wie und wo was erstellt wurde. Deshalb ist eine gute Plattformportierung sehr aufwendig, da auch die Tests unbedingt gemacht werden müssen. Einfach nur so auf Verdacht ein SW-Paket zu erstellen, was dann auf allen Plattform entsprechend läuft, geht nicht. Man muß die Umgebungen schon sehr genau kennen. Am besten entwickeln, und dann die verwendete Plattform als Systemvoraussetzung definieren, und das bei jeder neu.

Gast
2008-12-01, 17:47:00
Unter Windows ist eine Distribution ziemlich einfach zu machen. Man hat ein oder meherere Binaries und das war es auch schon. Diese laufen auf allen Windows-Plattformen.


Vorweg ich bin kein Programmierer.
Das sollte doch unter Linux auch funktionieren, wenn keine (externe) 'libs' benötigt werden. Man kann zB ein Binary aus einem SuSe RPM extrahieren und es unter Ubuntu ausführen. Zwischen 32 und 64bit muss natürlich unterschieden werden.

PHuV
2008-12-01, 18:00:27
Vorweg ich bin kein Programmierer.
Das sollte doch unter Linux auch funktionieren, wenn keine (externe) 'libs' benötigt werden. Man kann zB ein Binary aus einem SuSe RPM extrahieren und es unter Ubuntu ausführen. Zwischen 32 und 64bit muss natürlich unterschieden werden.

Du brauchst immer libs, und wenns die glibc ist, und hier gibt es schon schöne Unterschiede (glibc 2.1. 2.2 2.3), und die merkt man dann erst hinterher, beim Kunden oder so, nicht schön.

Odal
2008-12-01, 18:01:34
Vorweg ich bin kein Programmierer.
Das sollte doch unter Linux auch funktionieren, wenn keine (externe) 'libs' benötigt werden. Man kann zB ein Binary aus einem SuSe RPM extrahieren und es unter Ubuntu ausführen. Zwischen 32 und 64bit muss natürlich unterschieden werden.

ich schätze mal eher es geht hier um die 100.000 abhängigkeiten auf die geachtet werden muss und welche in den distributionspaketen je nach paketart hinterlegt sein müssen....

das (Cross)kompilieren für die gängigsten linux/unix platformen sollte (sofern der spaß mit wenig aufwand gcc+make konform ist) relativ unproblematisch sein

Monger
2008-12-01, 19:44:27
Deployment ist ein ziemlich komplexes Themenfeld. Das erschlägt man auch unter Windows nichtmal "nebenbei". XCopy Deployment funktioniert auch nur bei ziemlich simplen Programmen.

Insbesondere wenn man mit anderen Programmen oder z.B. dem Dateisystem interagiert, muss man da auch für jede Zielplattform anpassen. Außerhalb von Windows gibt es halt nunmal keine COM Welt o.ä.

Ectoplasma
2008-12-01, 23:20:59
Vielen Dank für eure Antworten.

Ich habe schon befürchtet, dass das Ganze nicht so einfach wird. Da muss ich dann wohl durch.
Mein Projekt heißt Picturenaut und es ist eine Bildbearbeitungssoftware für HDR Imaging. Die meisten Komponenten sind portabel und wurden mit gcc bzw. mingw compiliert. Leider ist das User-Interface (noch) nicht portabel. Das UI wird demnächst mit wxWidgets erstellt. Zumindest erscheint mir das am sinnvollsten. Ein MAC OSX Version soll es auch noch irgendwann geben.