Al utilizar el sistema de compilación de autotools y realizar la instalación, ¿ make install
cómo es posible evitar dañar los archivos de configuración existentes?
He definido un archivo de configuración de la Makefile.am
siguiente manera:
dist_sysconf_DATA = $(top_srcdir)/server.conf
¿Cómo es posible definir archivos de datos de tal manera que make install
no 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.conf
y /usr/share/myapp/default.conf
, de modo que un archivo vacío en /etc
resulte en el comportamiento predeterminado y la configuración en /etc
anule las de /usr
.