Verteilung einer Qt Anwendung unter Unix(oiden)
Verteilung einer Qt Anwendung unter Unix(oiden)
Was muss man beachten damit alles ordentlich funktioniert? Sollte man die Binaries oder lieber die Sourcen verteilen? Was macht man mit Qt dll selbst? Gibt es Kompatibilitätsprobleme bei verschiedenen Linux- distributionen?
Thx.
Thx.
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Beinahe jede Distribution benötigt ein eigenes Paket. Oder du baust auf einem Red Hat System binare Pakete, die laufen dann auf jeder Distribution.
Besonders verteillen!? Naja, bin gehört nach bin, lib gehört nach lib usw....
Wenn du von Unix keinen Plan hast, dann kannst du dir das so vorstellen:
c:\win\system32 = /lib
c:\programme\XXX = /bin
Zumindest in groben Zügen.
Besonders verteillen!? Naja, bin gehört nach bin, lib gehört nach lib usw....
Wenn du von Unix keinen Plan hast, dann kannst du dir das so vorstellen:
c:\win\system32 = /lib
c:\programme\XXX = /bin
Zumindest in groben Zügen.
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Ja, deshalb ja das Red Hat, das kann eben genau diese Dinge mit dem gcc machen. Eine Anwendung unter Red Hat gebaut geht auf jedem Linux. Ein Referenzprojekt ist FireFox, die haben für Linux nur ein Paket, eben mit Red Hat gebaut.
Das Problem an der Sache ist nur, dass nicht alles kompiliert werden kann, wie z.B. cairo, also gibt es derweil noch kein SVG für Linux in der stable Version, aber bei Windows und MAC schon.
Es muss eben immer auf einige Dinge verzichtet werden mit diesem Prinzip.
NoMachine hat es genial gemacht, aber es ist halt aufwendig. Für jede Distri ein Paket und ein static Paket, oder auch Opera. Das ist der bessere Weg, auch weil die Benutzer das Paket für Ihre Distri installieren und wissen wie das geht.
Das Problem an der Sache ist nur, dass nicht alles kompiliert werden kann, wie z.B. cairo, also gibt es derweil noch kein SVG für Linux in der stable Version, aber bei Windows und MAC schon.
Es muss eben immer auf einige Dinge verzichtet werden mit diesem Prinzip.
NoMachine hat es genial gemacht, aber es ist halt aufwendig. Für jede Distri ein Paket und ein static Paket, oder auch Opera. Das ist der bessere Weg, auch weil die Benutzer das Paket für Ihre Distri installieren und wissen wie das geht.
Die Pakete für alle Distributionen und Versionen selbst zu bauen kann seeeeeeeeeehr aufwändig sein. Ich halte es bei Kalva so, dass ich das auf meiner SuSE 9.3 erstellte Binärpaket (RPM), das Sourcepaket (SRPM), das Specfile nochmal extra und die Sourcen als Tarball veröffentliche.
Mit dem SRPM kann schon mal jeder, der eine andere SuSE-Version hat, und die Manpage von rpmbuild lesen kann, recht einfach ein passendes Binärpaket erstellen. Dazu reicht i.d.R. schon ein rpmbuild --rebuild foo.srpm.
Mit Hilfe von Sourcetarball und Spec ist es relativ leicht, ein Binärpaket für beliebige andere Distribution zu erstellen.
Wenn das Programm gpl't ist, ist das Erstellen eines Binärpakets für die eigene Distribution eine wunderbare Gelegenheit für versierte Anwender etwas zurückzugeben. Das funktioniert bei vielen Projekten eigentlich ganz gut. Kalva hat allerdings wohl noch nicht die kritische Masse erreicht, mir hat jedenfalls bisher niemand z.B. ein Mandriva- oder Fedora-Paket angeboten, für solche Angebote wäre ich dankbar und würde sie auf der Projekthomepage verlinken.
Mit dem SRPM kann schon mal jeder, der eine andere SuSE-Version hat, und die Manpage von rpmbuild lesen kann, recht einfach ein passendes Binärpaket erstellen. Dazu reicht i.d.R. schon ein rpmbuild --rebuild foo.srpm.
Mit Hilfe von Sourcetarball und Spec ist es relativ leicht, ein Binärpaket für beliebige andere Distribution zu erstellen.
Wenn das Programm gpl't ist, ist das Erstellen eines Binärpakets für die eigene Distribution eine wunderbare Gelegenheit für versierte Anwender etwas zurückzugeben. Das funktioniert bei vielen Projekten eigentlich ganz gut. Kalva hat allerdings wohl noch nicht die kritische Masse erreicht, mir hat jedenfalls bisher niemand z.B. ein Mandriva- oder Fedora-Paket angeboten, für solche Angebote wäre ich dankbar und würde sie auf der Projekthomepage verlinken.
-
BartSimpson
- Beiträge: 1379
- Registriert: 6. November 2004 12:03
- Kontaktdaten:
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Dann führt wohl kein Weg um den Rechnerpark herum (ggf. auch virtuell, sprich vmware, virtual pc, später wohl auch xen) und um entsprechend viel Zeit, weil Du viele Pakete bauen musst. Oder Du hast einen Kreis vertrauenswürdiger Anwender, die Dir die Pakete für ihre jew. Distri erstellen (wenigstens die brauchen dann aber die Sourcen).FlorianBecker hat geschrieben:Ja, aber genau darum geht es NICHT. Anwendung ohne Source für alle Linux Systeme verfügbar machen.
Oder Du musst alle Abhängigkeiten durch statisch gelinkte und mit ausgelieferte Bibliotheken befriedigen, was das Paket mächtig aufblasen wird. Aber nur so lässt sich das Funktionieren auf möglichst vielen Distributionen mit nur einem Binärpaket sichern.
Je nach Art der Abhängigkeiten lassen sich evtl. noch ein par Dinge kapseln. Dann lieferst Du eine dynamische Bibliothek im Sourcecode aus, die bei der Installation auf dem Zielsystem übersetzt wird (wie bei Treiberpaketen, z.B. für ATIs Grafikkarten).
-
FlorianBecker
- Beiträge: 1213
- Registriert: 2. Dezember 2004 10:54
- Kontaktdaten:
Ja, oder wie bereits oben erwähnt du holst dir Red Hat. Denn genauso macht es FireFox. Und die bringen nur eine Linux Version pro Release. Die Pakete machen die Distributionen.
Lepsai, nimm dir das Red Hat oder baue die Qt Lib im SuSE ohne xrender und frag micht jetzt nicht Support, basierend auf SuSE 8.1.
Dann baust du mit dieser Qt Version deine Anwendung und kannst die Binar rausgeben. Wenn du die als i386 baust, kann Sie jeder der einen PC mit Linux hat verwenden.
Bloß ich kenne das. Wenn jmd. kein Distripaket für seine Distri hat mekert der Anwender oder er benutzt es gleich gar nicht, oder es kommen tausende von Rückfragen.
Achja und bei Devel Libs musst du unter 64 Bit umbedingt -fpic bei gcc übergeben, damit es als shared object verlinkt werden kann.
Lepsai, nimm dir das Red Hat oder baue die Qt Lib im SuSE ohne xrender und frag micht jetzt nicht Support, basierend auf SuSE 8.1.
Dann baust du mit dieser Qt Version deine Anwendung und kannst die Binar rausgeben. Wenn du die als i386 baust, kann Sie jeder der einen PC mit Linux hat verwenden.
Bloß ich kenne das. Wenn jmd. kein Distripaket für seine Distri hat mekert der Anwender oder er benutzt es gleich gar nicht, oder es kommen tausende von Rückfragen.
Achja und bei Devel Libs musst du unter 64 Bit umbedingt -fpic bei gcc übergeben, damit es als shared object verlinkt werden kann.
Mit anderen Worten Dir reicht der amerikanische Markt. Wer was anderes verwendet, hat eben Pech:-[FlorianBecker hat geschrieben:Ja, oder wie bereits oben erwähnt du holst dir Red Hat.
Es kommt ganz auf die Art der Abhängigkeiten an. Es gibt (selten) Pakete, die auf JEDER rpm-basierten Distribution laufen. Es gibt aber auch (häufiger) Pakete, die nur auf Red-Hat basierten Distributionen funktionieren und anders Systeme in den Abgrund reissen. Insbesondere sind sich Distributoren bei der Frage uneins wo denn nun QTDIR und KDEDIRS etc. hinzeigen. Besonders übel wirds, wenn eine Distribution eine andere glibc einsetzt. Das kann gewaltig schief gehen.