我用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,用于使用当前登录的用户和组修改已安装程序的用户和组
如果有些问题?我需要帮助
答案 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脚本。我不知道你的用户脚本可以做些什么来建议一个可能的替代方案。