使用 cpack 创建 deb 包后运行脚本
Posted
技术标签:
【中文标题】使用 cpack 创建 deb 包后运行脚本【英文标题】:run a script after deb package is created with cpack 【发布时间】:2015-05-24 05:50:26 【问题描述】:我正在尝试使用 cpack 创建一个 deb 包。但是由于 cpack 中的一个错误,它正在创建具有错误权限的文件“md5sums”,并且在使用软件中心安装 deb 包时我收到警告。我有一个脚本,它将更改 deb 包中文件的权限。但是我对如何在打包后自动运行脚本感到困惑。
【问题讨论】:
【参考方案1】:您可以像这样使用安装后脚本:
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "$PROJECT_NAME/contrib/postinst;")
【讨论】:
你理解错了...我想更改包内文件的权限...例如 postint 脚本本身 CMake 的 INSTALL 命令具有 PERMISSIONS 选项 - 它指定已安装文件的权限。您是如何解决问题的? 不,我们不能指定权限,因为该文件是由 cpack iteslf 创建的【参考方案2】:我使用了以下方法
使用了具有以下内容的脚本
#!/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
【讨论】:
以上是关于使用 cpack 创建 deb 包后运行脚本的主要内容,如果未能解决你的问题,请参考以下文章