Как избежать затирания файлов конфигурации при установке с помощью make

Как избежать затирания файлов конфигурации при установке с помощью make

make installКак можно избежать затирания существующих файлов конфигурации при использовании системы сборки autotools и установке с ее помощью ?

Я определил файл конфигурации следующим образом Makefile.am:

dist_sysconf_DATA = $(top_srcdir)/server.conf

Как можно определить файлы данных таким образом, чтобы make installне затирать существующую версию?

решение1

Вы можете сделать так, чтобы ваша цель установки не копировала файл, если он уже есть, или скопировала его под другим именем. Вот пример изчеловек-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

Но лучше всего было бы строго разделить установленные файлы и пользовательскую настройку, чтобы пользователям никогда не приходилось менять распространяемый файл. Заставьте свое приложение считывать свою конфигурацию из обоих /etc/myapp.confи /usr/share/myapp/default.conf, так что пустой файл в /etcприводит к поведению по умолчанию, а настройки в /etcпереопределяют настройки в /usr.

Связанный контент