0

我正在尝试使用 cpack 创建一个 deb 包。但是由于 cpack 中的一个错误,它正在创建具有错误权限的文件“md5sums”,并且在使用软件中心安装 deb 包时我收到警告。我有一个脚本,它将更改 deb 包中文件的权限。但是我对如何在打包后自动运行脚本感到困惑。

4

2 回答 2

1

您可以像这样使用安装后脚本:

set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${PROJECT_NAME}/contrib/postinst;")
于 2015-07-13T12:45:27.203 回答
0

我使用了以下方法

使用了具有以下内容的脚本

#!/bin/sh
set -e
mkdir fix_up_deb
dpkg-deb -x @CPACK_PACKAGE_FILE_NAME@.deb fix_up_deb
dpkg-deb --control @CPACK_PACKAGE_FILE_NAME@.deb fix_up_deb/DEBIAN
rm @CPACK_PACKAGE_FILE_NAME@.deb
chmod 0644 fix_up_deb/DEBIAN/md5sums
find -type d -print0 |xargs -0 chmod 755
fakeroot dpkg -b fix_up_deb @CPACK_PACKAGE_FILE_NAME@.deb
rm -rf fix_up_deb

然后使用

CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/debian/fixup_deb.sh.in" "${CMAKE_CURRENT_BINARY_DIR}/fixup_deb.sh" @ONLY IMMEDIATE)

然后在使用构建包后运行它(我没有测试过这一步)

add_custom_command(TARGET package POST_BUILD COMMAND bash fixup_deb.sh WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} )

或者从构建目录手动运行它

bash fixup_deb.sh
于 2015-07-14T13:20:00.270 回答