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
.