Anzeige:
Ergebnis 1 bis 9 von 9

Thema: kopieren von Dateien zur Laufzeit von make install

  1. #1
    Registrierter Benutzer
    Registriert seit
    19.12.2001
    Ort
    Varel/Friesland
    Beiträge
    78

    Question kopieren von Dateien zur Laufzeit von make install

    Hi !

    Ich möchte bei einer autoconf-Installation meines tarballs einige Dateien nach /usr/local/bin schreiben. Da dazu root-rechte nötig sind, geht das erst in make install zur Laufzeit. Nur wie krieg ich da die nötigen Kommandos rein? Muessen die in configure eingebaut werden ? Hat das schon mal jemand gemacht? Ich möchte eben alles möglichst automatisch haben, für den normalen user gedacht. Hat jemand einen Vorschlag ?

    silic
    (bin zwar blutiger anfänger aber es blutet schon nicht mehr sooo stark )
    SuSE 8.0 Pro KDE 3.0.2 Kernel 2.4.18 - Athlon 1GHz - 256 MB RAM - 40GB HDD - GeForce 2 MX :D

    Für uns ist Linux die größte Bedrohung; bei Unix sind wir Angreifer,
    bei Linux der, der attackiert wird.
    Steve Ballmer, Präsident von Microsoft

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Das muß ins Makefile.am

    Wenn du ein autoconf/automake framework verwendets, befindet sich vielleicht schon etwas vergleichbares in einem der anderen Makefile.ams

    Hier ein Auszug aus einem Makefile.am, dass Daten eines Splashscreen installiert:
    Code:
    EXTRA_DIST = \
            kmud.jpg \
            nix_bg.jpg \
            splash.html \
            theme_nix.css
    
    install-data-local:
            $(mkinstalldirs) $(kde_datadir)/kmud/splash/
            $(INSTALL_DATA) splash.html $(kde_datadir)/kmud/splash/splash.html
            $(mkinstalldirs) $(kde_datadir)/kmud/splash/
            $(INSTALL_DATA) kmud.jpg $(kde_datadir)/kmud/splash/kmud.jpg
            $(mkinstalldirs) $(kde_datadir)/kmud/splash/
            $(INSTALL_DATA) theme_nix.css $(kde_datadir)/kmud/splash/theme_nix.css
            $(mkinstalldirs) $(kde_datadir)/kmud/splash/
            $(INSTALL_DATA) nix_bg.jpg $(kde_datadir)/kmud/splash/nix_bg.jpg
    
    uninstall-local:
            -rm -f $(kde_datadir)/kmud/splash/splash.html
            -rm -f $(kde_datadir)/kmud/splash/kmud.jpg
            -rm -f $(kde_datadir)/kmud/splash/theme_nix.css
            -rm -f $(kde_datadir)/kmud/splash/nix_bg.jpg
    Das kde_datadir wird vom KDE automake/autoconf framework vordefiniert, bei dir ist es das executable directory.
    Wei das heißt steht sicher in dem Makefile.am, in dem dein executable lompiliert und installiert wird.

    Ciao,
    _

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.12.2001
    Ort
    Varel/Friesland
    Beiträge
    78
    @anda_skoa: ich steig da noch nicht durch, weil mir die Syntax in Makefile.am fremd ist. Hier mal eine genauere Beschreibung des tasks: mein Makefile.am sieht so aus:
    Code:
    ####### kdevelop will overwrite this part!!! (begin)##########
    
    SUBDIRS = oracle 
    
    EXTRA_DIST = oracle.kdevprj admin AUTHORS COPYING ChangeLog INSTALL README TODO oracle.lsm
    
    ####### kdevelop will overwrite this part!!! (end)############
    # not a GNU package. You can remove this line, if
    # have all needed files, that a GNU package needs
    AUTOMAKE_OPTIONS = foreign
    
    $(top_srcdir)/configure.in: configure.in.in $(top_srcdir)/subdirs
    	cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common configure.in ;
    
    $(top_srcdir)/subdirs:
    	cd $(top_srcdir) && $(MAKE) -f admin/Makefile.common subdirs
    
    $(top_srcdir)/acinclude.m4: $(top_srcdir)/admin/acinclude.m4.in $(top_srcdir)/admin/libtool.m4.in
    	@cd $(top_srcdir) && cat admin/acinclude.m4.in admin/libtool.m4.in > acinclude.m4
    
     code:
    
    
    install-data-local:
            $(mkinstalldirs) $(kde_datadir)/oracle-dat
            $(INSTALL_DATA) dat $(kde_datadir)/oracle-dat/dat
    
    MAINTAINERCLEANFILES = subdirs configure.in acinclude.m4 configure.files
    
    package-messages:
    	$(MAKE) -f admin/Makefile.common package-messages
    
    dist-hook:
    	cd $(top_distdir) && perl admin/am_edit -padmin
    	cd $(top_distdir) && $(MAKE) -f admin/Makefile.common subdirs
    ich möchte jetzt die datei beispiel die im gleichen verz steht wie das makefile in den ordner /usr/local/etc schreiben. was muss in makefile.am rein ?

    silic
    SuSE 8.0 Pro KDE 3.0.2 Kernel 2.4.18 - Athlon 1GHz - 256 MB RAM - 40GB HDD - GeForce 2 MX :D

    Für uns ist Linux die größte Bedrohung; bei Unix sind wir Angreifer,
    bei Linux der, der attackiert wird.
    Steve Ballmer, Präsident von Microsoft

  4. #4
    Registrierter Benutzer
    Registriert seit
    19.12.2001
    Ort
    Varel/Friesland
    Beiträge
    78

    Lightbulb hot infos

    @all:

    ich habe endlich eine Info gefunden die meine probs behandelt:
    http://www.tm.informatik.uni-frankfu...n/AutomakeTut/

    wollte ich noch für alle posten.

    gruss silic
    SuSE 8.0 Pro KDE 3.0.2 Kernel 2.4.18 - Athlon 1GHz - 256 MB RAM - 40GB HDD - GeForce 2 MX :D

    Für uns ist Linux die größte Bedrohung; bei Unix sind wir Angreifer,
    bei Linux der, der attackiert wird.
    Steve Ballmer, Präsident von Microsoft

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Hmm, das könnte so gehen:

    Code:
    install-data-local:
            $(mkinstalldirs) $(kde_datadir)/oracle-dat
            $(INSTALL_DATA) dat $(kde_datadir)/oracle-dat/dat
            $(mkinstalldirs) ($prefix)/etc
            $(INSTALL_DATA) beispiel $(prefix)/etc/beispiel
    Ciao,
    _

  6. #6
    Registrierter Benutzer
    Registriert seit
    19.12.2001
    Ort
    Varel/Friesland
    Beiträge
    78
    @anda_skoa: was bewirken Deine Zeilen genau ? ich habe es in makefile.am eingefügt, aber es funzt noch nicht. reichlich verwirrend das ganze. dabei will ich doch nur ein paar datafiles von meinem binary zur Laufzeit benutzen lassen

    silic
    SuSE 8.0 Pro KDE 3.0.2 Kernel 2.4.18 - Athlon 1GHz - 256 MB RAM - 40GB HDD - GeForce 2 MX :D

    Für uns ist Linux die größte Bedrohung; bei Unix sind wir Angreifer,
    bei Linux der, der attackiert wird.
    Steve Ballmer, Präsident von Microsoft

  7. #7
    Registrierter Benutzer
    Registriert seit
    19.12.2001
    Ort
    Varel/Friesland
    Beiträge
    78

    Arrow genaue Erklärung

    Hi folks,

    ich versuche nochmal genau zu beschreiben, was mein prob ist, damit ihr ne chance habt mir zu helfen...

    ich schreibe ein proggi welches aus einer datei mit sätzen (einen satz pro zeile) per zufall einen satz auswählt. der zufallsgenerator basiert auf einer fibonaccifolge modulo einer konstanten. die startwerte liegen auch in einer datei (random seed). Deshalb muss das proggi zur laufzeit auf die startwerte lesend und schreibend zugreifen können und auf die datei mit den saetzen lesen können.wie bringe ich dem proggi (c++) bei auf einen zur zeit der installation festgelegten pfad die dateien zu bearbeiten und wie kann ich bei der autoconf installation die dateien an einen festgelegten platz kopieren so das das binary auch darauf zugreifen kann ? das ist mein problem (etwas von der hartnäckigen sorte )

    silic
    SuSE 8.0 Pro KDE 3.0.2 Kernel 2.4.18 - Athlon 1GHz - 256 MB RAM - 40GB HDD - GeForce 2 MX :D

    Für uns ist Linux die größte Bedrohung; bei Unix sind wir Angreifer,
    bei Linux der, der attackiert wird.
    Steve Ballmer, Präsident von Microsoft

  8. #8
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von silic
    @anda_skoa: was bewirken Deine Zeilen genau ? ich habe es in makefile.am eingefügt, aber es funzt noch nicht. reichlich verwirrend das ganze. dabei will ich doch nur ein paar datafiles von meinem binary zur Laufzeit benutzen lassen
    Ganz sicher bin ich mir leider auch nicht.
    Code:
    $(mkinstalldirs) ($prefix)/etc
    Das sollte das Verzeichnis etc in $prefix anlegen.
    $prefix ist das Verzeichnis, das man bei ./configure --prefix angibt.
    Der Defaultwert ist /usr/local

    Code:
    $(INSTALL_DATA) beispiel $(prefix)/etc/beispiel
    Das sollte die Datei bespiel ins neue Verzeichnis kopieren.

    Ich hab das so ähnlich in einem Makefie.am eines KDE Programmes gefunden (siehe eines meiner früheren Postings).

    In deinem Makefile.am steht, dass es von KDevelop generoert wurde.
    Wenn du händisch daran etwas änderst, mußt du in KDevelop das automatiche Generiern abschalten, sonst wird deine Änderung überschrieben.

    Soweit ich weiß kann KDevelop aber auch die Regeln für Datenfiles erstellen.
    Projekt->Dateieigenschaften oder so ähnlich.

    Wenn du schreibend auf die Datenfiles zugreifen willst, solltest du sie vielleicht beim ersten Schreibzugriff im HOME des Users abspeichern, zB in .programmname/

    Außerdem glaube ich, das Datenfiles nicht in $PREFIX/etc sondern in $PREFIX/share/programm gehören.

    Ciao,
    _

  9. #9
    Registrierter Benutzer
    Registriert seit
    19.12.2001
    Ort
    Varel/Friesland
    Beiträge
    78

    Lightbulb DANKE and_skoa !

    Original geschrieben von anda_skoa

    ...
    Soweit ich weiß kann KDevelop aber auch die Regeln für Datenfiles erstellen.
    Projekt->Dateieigenschaften oder so ähnlich.


    _
    ja, das hat mir geholfen. man kann alle dateien im project registrieren und angeben wo es hin installiert werden soll. meine güte war das eine aktion wer genau wissen will wie es geht, wende sich an mich per email.

    dank an anda_skoa, du hast mir schon so oft geholfen !

    silic
    SuSE 8.0 Pro KDE 3.0.2 Kernel 2.4.18 - Athlon 1GHz - 256 MB RAM - 40GB HDD - GeForce 2 MX :D

    Für uns ist Linux die größte Bedrohung; bei Unix sind wir Angreifer,
    bei Linux der, der attackiert wird.
    Steve Ballmer, Präsident von Microsoft

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •