CMAKE / CPACK:我想deb在安装后执行bash脚本,但它不起作用

时间:2014-02-19 02:09:33

标签: deb cpack post-install

我用cmake / cpack构建一个debian包。我想在我安装deb之后执行一个bash脚本。我安装了deb使用sudo dpkg -i my.deb.if我安装了这样的deb,安装了程序的用户和组是root。所以我希望deb自动执行一个bash脚本,使用当前登录的用户和组来修改用户和组。

我使用Google搜索有关此内容的信息。我发现SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA,。/ script / posttinst)可以执行此操作。所以我喜欢这样,但是没有用它。

我喜欢这个:

安装(PROGRAMS $ {CMAKE_SOURCE_DIR} / script / postinst DESTINATION ./script)

设置(CPACK_GENERATOR“DEB”)

设置(CPACK_PACKAGE_NAME“mydeb”)

设置(CPACK_PACKAGE_VERSION“1.0”)

设置(CPACK_DEBIAN_PACKAGE_MAINTAINER“George”)

set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA,./ script / prevtin)

设置(CPACK_PACKAGING_INSTALL_PREFIX“usr”)

包括(CPACK)

postinst是一个bash scritp,用于使用当前登录的用户和组修改已安装程序的用户和组

如果有些问题?我需要帮助

2 个答案:

答案 0 :(得分:1)

我也是这样做的。就我而言,我使用 set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA, ./script/postinst) 将 systemd 服务设置为在启动时运行。

同样,在实际删除 Debian 软件包之前,我使用 set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA, ./script/prerm) 从启动序列中彻底删除服务。

这里需要注意的是,您不需要单独安装这些文件。 set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA, ./script/postinst) 就足够了,因此不需要 install(DIRECTORY ${CMAKE_SOURCE_DIR}/scripts/ DESTINATION ${SCRIPT_DESINATION}。请确保正确设置这些附加脚本的权限。

答案 1 :(得分:0)

通常,postinst脚本不应修改与一个用户直接相关的任何内容,而应完成整个系统的安装。例如,如果需要基于系统上存在的硬件生成配置文件,则可以使用postinst脚本。我不知道你的用户脚本可以做些什么来建议一个可能的替代方案。