CPACK_DEBIAN_ <component> _PACKAGE_CONTROL_EXTRA被忽略

时间:2018-05-06 23:17:01

标签: cmake deb cpack

我正在尝试为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

1 个答案:

答案 0 :(得分:0)

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

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来说无关紧要 - 但很可能我只是有点盲......