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:
- Man hat immer eine Kopie von libborqt im Verzeichnis jeds Kylix-Programms rumliegen.
- Eigentlich möchte man (zumindest als von Delphi verwöhnter Windows-User, wie ich es bin) nur ein einziges Executable auf den Rechner kopieren (erinnert sich noch wer an das vbrun300.dll Generve aus der Zeit bevor Microsoft die Visual-Basic Runtime bei Windows mitgeliefert hat?).
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!)