적절한 업데이트는 항상 이전 구성 파일을 덮어씁니다.

적절한 업데이트는 항상 이전 구성 파일을 덮어씁니다.

저는 코드를 Ubuntucore 기반 16.04 LTS에 deb 패키지(cmake로 구축, CpackDeb로 포장)로 구축하고 배포하고 있습니다. 패키지는 구성 파일 등을 설치합니다. 업데이트 중에 이전 구성 파일을 유지하기 위해 apt/apt-get을 얻을 수 없습니다. 편집 여부에 관계없이 모든 테스트 사례에서 이전 구성을 자동으로 덮어씁니다. 내가 시도한 것들:

$ apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" install <package>

$ export DEBIAN_FRONTEND=noninteractive ; apt-get install -y -o Dpkg::Options::="--force-confold" <package>

또한 몇 가지 변경 사항이 있습니다. 결과는 항상 동일합니다. 즉, 이전 구성 파일을 자동으로 덮어쓰는 것입니다. 적절한 버전은 1.2.31이고 arm64 프로세서를 사용하고 있습니다.

어쩌면 내가 deb를 올바르게 패키지하지 않았을까요? 내 프로필은 설치 가능한 프로필일 뿐입니다. 구성 파일에 대한 특별한 요구 사항이 있는지 모르겠습니다. 혹시 있습니까?

답변1

conffiles컨트롤에 파일을 포함 해야 합니다 control.tar.gz. 패키지 생성 시 사용dpkg-deb이 파일 은 DEBIAN/conffiles데비안 패키지에 포함된 각 구성 파일에 대해 한 줄만 있어야 합니다. 각 줄은 구성 파일의 전체 경로를 지정합니다.

바라보다https://manpages.debian.org/testing/dpkg-dev/deb-conffiles.5.en.html

이 콘텐츠를 포함하면 해당 파일이 시스템에 프로필로 등록되며 자동으로 덮어쓰여지지 않습니다.


나는 CPackDeb을 직접 사용하지 않았지만 파일을 추가하는 방법에 대한 참조는 다음과 같습니다 control.tar.gz.

https://cmake.org/cmake/help/v3.0/module/CPackDeb.html?highlight=conffiles

set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
    "${CMAKE_CURRENT_SOURCE_DIR/prerm;${CMAKE_CURRENT_SOURCE_DIR}/postrm") 

관련 정보