makeでインストールするときに設定ファイルを上書きしないようにするにはどうすればいいでしょうか

makeでインストールするときに設定ファイルを上書きしないようにするにはどうすればいいでしょうか

autotools ビルド システムを使用してインストールする場合、make install既存の構成ファイルを上書きしないようにするにはどうすればよいですか?

次のように設定ファイルを定義しました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

関連情報