Seite 1 von 1

qmake - make install - homedir

Verfasst: 17. März 2009 14:38
von sigvdr
Was muss ich im Projectfile .pro definieren, damit zu einem Programm auch die Beispieldateien in den home Ordner des Benutzers installiert wird ? ( auf einer Linux Installation )

zur Zeit sieht meine ( gekürzte ) Project Datei so aus:

Code: Alles auswählen

...
...
target.path += /usr/bin/
example.path += $$(HOME)/example
example.files += example/*
INSTALLS += tartget \
   example

Weil aber ein anschließendes "make install" mit root Rechten ausgeführt werden muss, erhalten auch die kopierten Beispieldateien als Eigentümer den root und auch keine Schreibrechte für den Benutzer ( generell vorgegeben durch die Projektdatei ).
Es gibt ( lt. spärlicher qmake Doku zu diesem Thema ) noch ein .extra Member, da könnte ich

Code: Alles auswählen

example.extra += irgendEinCopyBefehl
unterbringen. Das wird aber dann nur als zusätzliche Anweisung zwischen die Erstellung des Ordners ../example und dem anschließenden Kopieren geschoben.

Wo finde ich weitere Infos oder Beispiele ?

Gruß Sig

Verfasst: 17. März 2009 15:18
von androphinx
was soll das bringen, beispieldateien ins homeverzeichnis zu legen, aus meiner sicht ergibt das keinen sinn. ich würde die beispieldateien mit ins programmverzeichnis legen und im programm bzw. in der hilfe drauf verweisen...

Mfg androphinx

Verfasst: 17. März 2009 20:32
von sigvdr
was soll das bringen, beispieldateien ins homeverzeichnis zu legen
Weil bei Linux das Home Verzeichnis das einzige Verzeichnis ist in dem der Benutzer Schreibrechte haben soll. Alles andere soll maximal lesbar sein.
beispieldateien mit ins programmverzeichnis legen
Beispieldateien nach /usr/bin zu schieben wäre keine wirklich gute Idee. Ein eigenes Programmverzeichnis ist in Linux nicht vorgesehen.

Gruß Sig

Verfasst: 18. März 2009 08:45
von RavenIV
Normalerweise installiert der Benutzer auch keine Programme unter Linux.
Das macht der root.
Und dann kann das Programm seine Examples ins Programm-Verzeichnis kopieren.

Verfasst: 18. März 2009 10:38
von MichaelS
sigvdr hat geschrieben: Ein eigenes Programmverzeichnis ist in Linux nicht vorgesehen.
Doch, nämlich im Verzeichnis /opt (siehe http://www.pathname.com/fhs/pub/fhs-2.3.html)
sigvdr hat geschrieben:Beispieldateien nach /usr/bin zu schieben wäre keine wirklich gute Idee.
Das ist korrekt. Aber auch hier hilft das /opt Verzeichnis, aus dem dann die Dateien - wie von Raven IV beschrieben - in das Homeverzeichnis kopiert werden können.

Gruß Michael

Verfasst: 18. März 2009 11:05
von chrootdev
Warum sagt ihr ihm eigentlich nicht einfach was er wissen möchte? Euer "das gehört so, und das ist so und ein verzeichnis ist vorgesehen bla bla" bring ihm nicht wirklich was!

Ob ein verzeichnis für seine anwendung vorgesehen ist oder nicht bleibt ihm überlassen und wohin er irgendwas kopieren möchte bleibt auch ihm überlassen!

Ich habe leider auch keine lösung für dein problem finden können, jedoch könntest du alles in ein verzeichnis von root kopieren, und beim ersten starten vom programm führst du ein script oder einen befehl aus, der das dann mit den richtigen rechten in das home-verzeichnis kopiert.

Verfasst: 18. März 2009 11:58
von androphinx
@chrootdev: es geht einfach darum, dass er sich unnötig mühe macht. ich kenne absolut kein linux-programm, das beispieldateien ins homeverzeichnis schreibt....

Mfg androphinx

Verfasst: 18. März 2009 13:28
von MichaelS
chrootdev hat geschrieben:Ob ein verzeichnis für seine anwendung vorgesehen ist oder nicht bleibt ihm überlassen und wohin er irgendwas kopieren möchte bleibt auch ihm überlassen!.
Es hat schon gute Gründe, dass es die LSB gibt. Spätestens wenn er die Anwendung veröffentlicht, wird sie ihm um die Ohren gehauen, wenn sie sich nicht LSB-konform verhält. Kein Anwender hat Lust, bei jeder installierten Anwendung zu suchen, wo der Programmierer die Dateien versteckt haben könnte. Warum also nicht gleich die saubere Lösung?

Verfasst: 18. März 2009 14:46
von sigvdr
Hallo,

um das Linux konform zu installieren, muss ich also in einem Zwischenschritt die Beispieldateien zuerst in ein Verzeichnis kopieren in dem der user keine Schreibrechte hat, und das Anwendungsprogramm kopiert dann in einem zweiten Schritt die Beispiele nach /home/user ?

Ob allerdings /opt der richtige Ort dafür ist ? Da hätte ich auf /usr/share getippt. Bei meinen Linux Installationen ist /opt ein leeres Verzeichnis.

Davon unabhängig: Wo gibt es weitere Infos zu qmake. Die Doku von QT ist gerade zu diesem Thema extrem spärlich.

Gruß Sig

Verfasst: 18. März 2009 15:11
von chrootdev
Wo installierst du denn dein programm hin? Da würde ich die beispiele auch hinlegen, und beim starten des programms, event. nach einer abfrage ob der user das möchte, kopierst du die beispiele in sein home verzeichnis.

Installation event. nach /usr/share/deine_app

Verfasst: 18. März 2009 15:32
von sigvdr
Hallo,

das Programm wird nach /usr/bin installiert und die Doku nach /usr/share/AppName, so wie das von vielen anderen Programmen auch gemacht wird.

Gruß Sig

Verfasst: 18. März 2009 22:33
von MichaelS
sigvdr hat geschrieben: Ob allerdings /opt der richtige Ort dafür ist ? Da hätte ich auf /usr/share getippt. Bei meinen Linux Installationen ist /opt ein leeres Verzeichnis.
Das das /opt Verzeichnis bei Dir leer ist, überrascht nicht, denn dieses Verzeichnis ist für die Installation von distributionsfremder sowie kommerzieller Anwendungen gedacht. In /usr/bin sollte man eigene Applikationen nicht installieren, um Konflikte mit den (möglicherweise gleichnamigen) Programmen aus den Paketen der Distribution zu vermeiden.

Das Verzeichnis /usr/share kommt für (ausführbare) Binärdateien überhaupt nicht in Frage, da dieses Verzeichnis gemäß LSB nur für architekturunabhängige Datendateien vorgesehen ist.

Gruß Michael