apt update 总是覆盖旧的配置文件

apt update 总是覆盖旧的配置文件

我正在将我的代码作为 deb 包(使用 cmake 构建,使用 CpackDeb 打包)构建并分发到基于 Ubuntucore 的 16.04 LTS。该软件包安装了一个配置文件等。我无法让 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>

还有一些变化。结果总是相同的 - 旧配置文件的静默覆盖。 apt版本是1.2.31,我使用的是arm64处理器。

也许我没有正确打包 deb?我的配置文件只是一个可安装的。我不知道配置文件有什么特殊要求,有吗?

答案1

您需要conffiles在控件中包含一个文件control.tar.gz。创建包时使用dpkg-deb这是放置在DEBIAN/conffiles.对于 debian 软件包中包含的每个配置文件,该文件都应该只有一行。每行指定配置文件的完整路径。

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") 

相关内容