autotools 빌드 시스템을 사용하고 설치할 때 make install
기존 구성 파일이 손상되는 것을 방지하는 방법은 무엇입니까?
다음과 같이 구성 파일을 정의했습니다 Makefile.am
.
dist_sysconf_DATA = $(top_srcdir)/server.conf
make install
기존 버전을 방해하지 않는 방식으로 데이터 파일을 정의하는 것이 어떻게 가능합니까 ?
답변1
파일이 이미 있는 경우 설치 대상이 해당 파일을 복사하지 않도록 하거나 다른 이름으로 복사할 수 있습니다. 다음은man-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
.