Re: Wie Linux Binary ausliefern?
- From: Michael Baeuerle <michael.baeuerle@xxxxxxxx>
- Date: Wed, 08 Dec 2010 11:57:03 +0100
Edzard Egberts wrote:
ich habe hier eine kommerzielle Software unter Linux geschrieben und
daraus eine Windows-Version mit Installer erstellt (damit kenne ich mich
aus). Weil ja sowieso eine Linux-Version vorhanden ist, habe ich im
jugendlichen Leichtsinn in die Dokumentation geschrieben "also Linux
available" und zu meiner Überraschung will jetzt gleich der erste Kunde
die Linux-Version haben. Ups, besser mal die Klappe gehalten! :o/
Wie kann ich so etwas denn möglichst kundenfreundlich erstellen und
ausliefern? Zuerst dachte ich an ein rpm-Paket, aber das funktioniert
scheinbar mit Quelltexten und die möchte der Chef nicht ausliefern.
Wie schon gesagt wurde, du kannst auch ein RPM mit Binaries drin
erstellen. Das laeuft so aber halt nicht automatisch auf jedem
GNU/Linux.
Ich habe also ein Binary und müsste unter Umständen auch noch
Abhängigkeiten installieren, das Binary braucht nämlich z.B. die
libstdc++ (cxxlibs) und wahrscheinlich noch weitere Sachen (X-Zeugs für
die GUI?) - wie finde ich das denn heraus? Gibt es da so etwas wie einen
"Dependency Checker" (den kenne ich von Windows)? Die Bibliotheken habe
ich zwar alle statisch gelinkt, damit habe ich aber die Abhängigkeiten
dieser Bibliotheken (wie eben z.B. die libstdc++) nicht abgedeckt.
Wenn du da mit den Abhaengigkeiten anfaengst hast du schon verloren und
musst quasi fuer jede Distribution ein eigenes Paket bereitstellen. Der
ganze C++ Kram muss z.B. mit der gleichen GCC Major-Version compiliert
worden sein wie die C++ Libraries die du laden willst, ansonsten ist das
nicht kompatibel.
Fuer kleine Prograemmchen kann man folgendes machen: Alles ausser der
libc (libstdc++, X11 client, GUI toolkit, ...) statisch linken, das
Binary will dann vom Zielsystem nur noch folgendes:
--------------------------------------------------
linux-gate.so.1 => (0xffffe000)
libm.so.6 => /lib/tls/libm.so.6 (0xb77e4000)
libc.so.6 => /lib/tls/libc.so.6 (0xb76c8000)
/lib/ld-linux.so.2 (0xb781c000)
--------------------------------------------------
Lediglich die libc auf dem Zielsystem muss dann gleich oder neuer sein,
damit man es dort ausfuehren kann. Das Programm mit einer moeglichst
alten libc bauen erhoeht daher die Kompatibilitaet. Hauptnachteil: Man
muss bei einer Sicherheitsluecke in den statisch gelinkten Libs das
Programm neu bauen und verteilen.
In meinem Fall bestand das Programm nur aus einer Datei (dank FLTK keine
2MByte gross), dafuer braucht es kein Paket. Zum Installieren kopiert
der Kunde das File einfach irgendwohin wo es via PATH gefunden wird. Zum
Deinstallieren loescht er es wieder runter.
Micha
.
- Follow-Ups:
- Re: Wie Linux Binary ausliefern?
- From: Stefan Reuther
- Re: Wie Linux Binary ausliefern?
- From: Harald Meyer
- Re: Wie Linux Binary ausliefern?
- From: Edzard Egberts
- Re: Wie Linux Binary ausliefern?
- References:
- Wie Linux Binary ausliefern?
- From: Edzard Egberts
- Wie Linux Binary ausliefern?
- Prev by Date: Re: Wie Linux Binary ausliefern?
- Next by Date: Re: Wie Linux Binary ausliefern?
- Previous by thread: Re: Wie Linux Binary ausliefern?
- Next by thread: Re: Wie Linux Binary ausliefern?
- Index(es):
Relevant Pages
|