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 来说无关紧要 - 但很可能是我有点盲目......
我正在尝试为 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 来说无关紧要 - 但很可能是我有点盲目......