qmake - make install - homedir

Verschiedenes zu Qt
Antworten
sigvdr
Beiträge: 100
Registriert: 1. Juli 2008 19:29

qmake - make install - homedir

Beitrag 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
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag 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
sigvdr
Beiträge: 100
Registriert: 1. Juli 2008 19:29

Beitrag 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
RavenIV
Beiträge: 267
Registriert: 21. Januar 2009 14:24
Wohnort: Waldshut

Beitrag 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.
Linux, das längste Text-Adventure aller Zeiten
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Beitrag 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
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

Beitrag 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.
androphinx
Beiträge: 170
Registriert: 26. Januar 2009 09:19
Wohnort: 127.0.0.2

Beitrag 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
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Beitrag 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?
sigvdr
Beiträge: 100
Registriert: 1. Juli 2008 19:29

Beitrag 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
chrootdev
Beiträge: 70
Registriert: 18. April 2008 17:52

Beitrag 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
sigvdr
Beiträge: 100
Registriert: 1. Juli 2008 19:29

Beitrag 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
MichaelS
Beiträge: 240
Registriert: 27. Dezember 2005 12:49

Beitrag 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
Antworten