Como você pode evitar a destruição de arquivos de configuração ao instalar com make

Como você pode evitar a destruição de arquivos de configuração ao instalar com make

Ao usar o sistema de compilação autotools e instalar make installcomo é possível evitar a destruição dos arquivos de configuração existentes?

Eu defini um arquivo de configuração da Makefile.amseguinte maneira:

dist_sysconf_DATA = $(top_srcdir)/server.conf

Como é possível definir arquivos de dados de forma que make installnão atrapalhem uma versão existente?

Responder1

Você pode fazer com que seu destino de instalação não copie o arquivo se ele já estiver lá ou copie-o com um nome diferente. Aqui está um exemplo dehomem-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

Mas a melhor coisa a fazer seria manter uma separação estrita entre os arquivos instalados e a personalização do usuário, para que os usuários nunca precisem alterar um arquivo distribuído. Faça seu aplicativo ler sua configuração de /etc/myapp.confe /usr/share/myapp/default.conf, para que um arquivo vazio em /etcresulte no comportamento padrão e as configurações em /etcsubstituam aquelas em /usr.

informação relacionada