makeself ist ein Shell-Script, welches selbstextrahierende tar-Archive erstellt. Dazu wird einem tar-Archiv ein Shell-Script vorangestellt, welches automatisch tar zum Auspacken aufruft und dann optional ein aus dem Archiv extrahiertes Script ausführt.

Homepage: http://www.megastep.org/makeself/

Lizenz: GPL

Tipps & Tricks

"Executables" fuer Kylix erstellen

ToDo: nach Kylix verschieben.

Ein immer wieder aufkommendes Problem mit Borland Kylix ist, dass damit erstellte Programme eine shared Library benötigen, die in der Regel auf dem Zielsystem nicht installiert ist. Da Linux solche Shared Libraries nicht automatisch aus dem aktuellen Verzeichnis liest, muss diese entweder speziell installiert werden oder aber man muss die Environment-Variable LD_LIBRARY_PATH entsprechend setzen.

Die simple Loesung ist ein Script wie das folgende:

QTLIBDIR=`dirname $0`
LD_LIBRARY_PATH="$QTLIBDIR:$LD_LIBRARY_PATH"
export LD_LIBRARY_PATH
$0.bin

Dieses Script geht davon aus, dass die Shared Libraries sich im gleichen Verzeichnis wie das Script und das Executable (kyrdesktop.bin) befinden und dass das Executable die Extension .bin hat (in Kylix Project Options/Application/Output settings/Target file extension auf "bin" setzen), z.B.:

[twm@twmceleron kyrdesktop]$ ll
total 8100
-rwxr-xr-x    1 twm  twm    1 Jan  4 18:28 kyrdesktop*
-rwxr-xr-x    1 twm  twm  728 Jan  4 18:38 kyrdesktop.bin*
-rwxr-xr-x    1 twm  twm 7350 Jan  4 17:45 libborqt-6.9.0-qt2.3.so*
lrwxrwxrwx    1 twm  twm    1 Jan  4 17:45 libborqt-6.9-qt2.3.so -> libborqt-6.9.0-qt2.3.so*

Das Script ermittelt den Directory-Namen aus dem Parameter $0 und erweitert LD_LIBRARY_PATH um dieses Verzeichnis. Danach wird das Executable aufgerufen.

Nachteile:

Gegen letzteres hilft makeself:

Man kann damit einfach ein selbstextrahierendes Tar-Archiv erzeugen, welches alle notwendigen Dateien in ein temporäres Verzeichnis extrahiert und dann das Startscript aufruft. Danach wird dieses Verzeichnis wieder gelöscht.

Beispiel:

Angenommen die oben gelisteten Dateien befinden sich im Unterverzeichnis kyrdesktop, makeself.sh befindet sich im Path. Man möchte ein selbstextrahierendes Tar-Archiv kyrdesktop.run erstellen, welches man unter z.B. KDE einfach durch einen Mausklick starten kann, um die darin befindliche Anwendung zu starten.

Dazu ruft man makeself wie folgt auf:

makeself.sh --nox11 --nowait kyrdesktop kyrdesktop.run "Beschreibung des Pakets hier" ./kyrdesktop
--nox11
bewirkt, dass beim Aufruf des Archivs unter X kein xterm Fenster geoeffnet wird
--nowait
bewirkt, dass nach Beenden des Programms nicht auf eine Benutzereingabe gewartet wird.
kyrdesktop
ist der Name des Unterverzeichnisses, welches in das Archiv gepackt werden soll.
kyrdesktop.run
ist der Name des zu erstellenden Archivs
"Beschreibung ..."
ist eine Beschreibung des Archivinhalts
./kyrdesktop
ist das nach dem Extrahieren auszufuehrende Script (man beachte den vorangestellten Punkt!)

Mini-Howto

makeself (zuletzt geändert am 2007-12-23 22:47:08 durch localhost)