使用 make 安装时如何避免破坏配置文件

使用 make 安装时如何避免破坏配置文件

当使用 autotools 构建系统并安装时,make install如何避免破坏现有的配置文件?

我已经定义了一个配置文件,如下Makefile.am所示:

dist_sysconf_DATA = $(top_srcdir)/server.conf

如何以make install不会破坏现有版本的方式定义数据文件?

答案1

您可以使安装目标不复制该文件(如果该文件已存在),或者以不同的名称复制该文件。这是一个例子人数据库

# 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

相关内容