CPACK_DEBIAN_<component>_PACKAGE_CONTROL_EXTRA 被忽略

CPACK_DEBIAN_<component>_PACKAGE_CONTROL_EXTRA gets ignored

我正在尝试为 cmake 项目构建 deb 包。这个项目(foundationdb——但这可能与这个问题无关)包含两个组件,我想为它构建两个包。但是,这似乎效果不佳。具体来说,似乎忽略了对控制存档的添加。这是我当前的 cpack 配置:

set(CPACK_DEB_COMPONENT_INSTALL ON)
set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS ON)
# clients
set(CPACK_DEBIAN_clients_PACKAGE_CONTROL_STRICT_PERMISSION ON)
set(CPACK_DEBIAN_clients_PACKAGE_SECTION "database")
set(CPACK_DEBIAN_clients_PACKAGE_DEPENDS "adduser, libc6 (>= 2.11)")
set(CPACK_DEBIAN_clients_PACKAGE_HOMEPAGE "https://www.foundationdb.org")
set(CPACK_DEBIAN_clients_PACKAGE_CONTROL_EXTRA
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-clients/postinst)

set(CPACK_DEBIAN_server_PACKAGE_CONTROL_STRICT_PERMISSION ON)
set(CPACK_DEBIAN_server_PACKAGE_SECTION "database")
set(CPACK_DEBIAN_server_PACKAGE_DEPENDS "adduser, libc6 (>= 2.11), python (>= 2.6)")
set(CPACK_DEBIAN_server_PACKAGE_CONTROL_EXTRA
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/conffiles
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/preinst
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/postinst
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/prerm
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/postrm)

但是,当我在服务器包上使用 cpack dpkg -I 构建包时,会得到以下输出(客户端的输出看起来非常相似,这个包有同样的问题):

new Debian package, version 2.0.
size 376987382 bytes: control archive=1088 bytes.
    265 bytes,     9 lines      control
   1864 bytes,    27 lines      md5sums
Package: foundationdb
Version: 6.0.0
Section: devel
Priority: optional
Architecture: amd64
Installed-Size: 1240492
Maintainer: The FoundationDB Community
Description: FoundationDB is a scalable, fault-tolerant, ordered key-value store with full ACID transactions.

这意味着缺少控制文件。这意味着脚本在安装和卸载期间不是 运行。

我已经检查过 CPackConfig.cmake 中的变量设置是否正确,当我构建一个包而不是添加额外的组件时似乎工作正常。

这里有什么我遗漏的吗?我正在使用 cmake 版本 3.10.2

在尝试了网上找到的几种方法并添加后,我终于找到了问题所在。组件名称必须全部大写。例如这一行

set(CPACK_DEBIAN_server_PACKAGE_CONTROL_EXTRA
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/conffiles
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/preinst
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/postinst
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/prerm
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/postrm)

必须是

set(CPACK_DEBIAN_SERVER_PACKAGE_CONTROL_EXTRA
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/conffiles
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/preinst
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/postinst
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/prerm
  ${CMAKE_SOURCE_DIR}/packaging/deb/DEBIAN-foundationdb-server/postrm)

我在文档中看不到这一点,这对 CPackRPM 来说无关紧要 - 但很可能是我有点盲目......