¿Cómo se puede evitar dañar los archivos de configuración al instalar con make?

¿Cómo se puede evitar dañar los archivos de configuración al instalar con make?

Al utilizar el sistema de compilación de autotools y realizar la instalación, ¿ make installcómo es posible evitar dañar los archivos de configuración existentes?

He definido un archivo de configuración de la Makefile.amsiguiente manera:

dist_sysconf_DATA = $(top_srcdir)/server.conf

¿Cómo es posible definir archivos de datos de tal manera que make installno afecten a una versión existente?

Respuesta1

Puede hacer que su destino de instalación no copie el archivo si ya está allí, o copiarlo con un nombre diferente. He aquí un ejemplo dehombre-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

Pero lo mejor sería mantener una separación estricta entre los archivos instalados y la personalización del usuario, de modo que los usuarios nunca tengan que cambiar un archivo distribuido. Haga que su aplicación lea su configuración desde /etc/myapp.confy /usr/share/myapp/default.conf, de modo que un archivo vacío en /etcresulte en el comportamiento predeterminado y la configuración en /etcanule las de /usr.

información relacionada