Wie können Sie das Überschreiben von Konfigurationsdateien bei der Installation mit make vermeiden?

Wie können Sie das Überschreiben von Konfigurationsdateien bei der Installation mit make vermeiden?

make installWie kann bei Verwendung des Autotools-Build-Systems und bei der Installation vermieden werden, dass vorhandene Konfigurationsdateien überschrieben werden?

Ich habe eine Konfigurationsdatei wie Makefile.amfolgt definiert:

dist_sysconf_DATA = $(top_srcdir)/server.conf

Wie ist es möglich, Datendateien so zu definieren, dass make installeine vorhandene Version dadurch nicht beeinträchtigt wird?

Antwort1

Sie können Ihr Installationsziel so einrichten, dass die Datei nicht kopiert wird, wenn sie bereits vorhanden ist, oder sie unter einem anderen Namen kopieren. Hier ist ein Beispiel vonman-db.

# We deliberately leave the configuration file in place on uninstall, since
# it may contain local customisations.
distuninstallcheck_listfiles = \
        find . -type f -print | grep -v 'etc/man_db\.conf'

noinst_DATA = man_db.conf

install-data-hook:
        @if test -f $(DESTDIR)$(config_file); then \
                echo "$(DESTDIR)$(config_file) already exists; overwrite manuall
        else \
                test -z "$(config_file_dirname)" || $(MKDIR_P) "$(DESTDIR)$(conf
                echo " $(INSTALL_DATA) man_db.conf $(DESTDIR)$(config_file)"; \
                $(INSTALL_DATA) man_db.conf $(DESTDIR)$(config_file); \
        fi

Am besten wäre es jedoch, eine strikte Trennung zwischen installierten Dateien und Benutzeranpassungen beizubehalten, sodass Benutzer niemals eine verteilte Datei ändern müssen. Sorgen Sie dafür, dass Ihre Anwendung ihre Konfiguration sowohl aus als auch liest /etc/myapp.conf, /usr/share/myapp/default.confsodass eine leere Datei unter /etczum Standardverhalten führt und die Einstellungen unter /etcdiejenigen unter überschreiben /usr.

verwandte Informationen