Mit Borland Kylix erstellte Programme benoetigen eine Shared Library
(libborqt-6.9.so), 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:
#!/bin/bash
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 befinden
und dass das Execurable 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 eines jeden Kylix-Programms rumliegen. Das ist aergerlich, aber angesichts heutiger Festplattenkapazitaeten kein wirkliches Problem mehr.
-
Eigentlich moechte man (zumindest als von Delphi verwoehnter Windows-User, wie ich es bin) nur ein einziges Executable auf den Rechner kopieren und starten. (Erinnert sich noch wer an das vbrun300.dll Generve aus der Zeit bevor Microsoft die Visual-Basic Runtime bei Windows mitgeliefert hat?)
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.
Man kann damit einfach ein selbstextrahierendes Tar-Archiv erzeugen,
welches alle notwendigen Dateien in ein temporaeres Verzeichnis
extrahiert und dann das Startscript aufruft. Danach wird dieses
Verzeichnis wieder geloescht.
Beispiel:
Angenommen die oben gelisteten Dateien befinden sich im Unterverzeichnis
kyrdesktop, makeself.sh befindet sich im Path. Man moechte ein
selbstextrahierendes Tar-Archiv kyrdesktop.run erstellen, welches
man unter z.B. KDE einfach durch einen Mausklick aufrufen 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
Die Parameter haben folgende Bedeutung:
-
--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!)
Dieser Aufruf erstellt eine neue Datei kyrdesktop.run und macht sie
automatisch ausfuehrbar. Am Anfang der Datei steht ein Script, welches
tar aufruft um den Rest des Scripts in ein temporaeres Verzeichnis
zu entpacken. Danach wechselt es in dieses Verzeichnis und ruft dort
./kyrdesktop auf. Es wartet dann darauf, dass das Script zurueckkehrt
(also das Programm beendet wird), und loescht das temporaere Verzeichnis
wieder.
Es ist nun moeglich, die Datei kyrdesktop.run auf einen anderen Rechner zu
kopieren und dort auszufuehren. Wenn man alles richtig gemacht hat, sind
keine anderen Dateien notwendig.
Falls die hier beschriebene Loesung nicht ausreicht, hilft vielleicht
InstallMade. Ich habe keine
Ahnung, ob es etwas taugt, aber es scheint der einzige
Installer fuer Kylix-Programm zu sein, den es gibt.
(c) Copyright 2004 by Thomas Mueller, alle Rechte vorbehalten
This document was generated using AFT v5.096
|