저는 코드를 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")