使用 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

相關內容