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
.