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.

관련 정보