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

2

Ao usar o sistema de criação de autotools e instalar com make install , como é possível evitar a supressão de arquivos de configuração existentes?

Eu defini um arquivo de configuração em Makefile.am da seguinte forma:

dist_sysconf_DATA = $(top_srcdir)/server.conf

Como é possível definir arquivos de dados de tal forma que make install não atrapalhe uma versão existente?

    
por zod90 11.05.2014 / 09:18

1 resposta

2

Você pode fazer com que seu destino de instalação não copie o arquivo, se já estiver lá, ou copie-o com um nome diferente. Aqui está um exemplo de man-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.conf e /usr/share/myapp/default.conf , para que um arquivo vazio em /etc resulte no comportamento padrão e as configurações em /etc sobreponham as que estão abaixo de /usr .

    
por 12.05.2014 / 01:06

Tags