使用 CPack 自动启动创建 deb 包 [关闭]

Posted

技术标签:

【中文标题】使用 CPack 自动启动创建 deb 包 [关闭]【英文标题】:Create deb package with autostart by CPack [closed] 【发布时间】:2018-11-28 13:05:09 【问题描述】:

我正在构建一个应该作为服务运行的 Debian 软件包。另外,我有一个描述我的服务的文件。

install(TARGETS "$SERVICE_NAME"
        DESTINATION "bin"
        COMPONENT "$SERVICE_NAME")

install(FILES "$SERVICE_NAME.service"
        DESTINATION "/lib/systemd/system/"
        COMPONENT "$SERVICE_NAME")

cpack_add_component_group("$SERVICE_NAME")

cpack_add_component("$SERVICE_NAME"
                    DISPLAY_NAME "$SERVICE_NAME"
                    DESCRIPTION "$DESCRIPTION"
                    GROUP "$SERVICE_NAME"
                    INSTALL_TYPES Full)

我想在安装包后运行:

systemctl enable wb-rules && service wb-rules start

作为另一种选择,也许 CPack 有一个现成的解决方案来安装 system.d 服务?

【问题讨论】:

为什么否定??? 不是我的反对意见,但这是一个广泛的问题,没有迹象表明您已经研究过该主题或实际尝试过任何事情。也许您可以edit 您的问题包含一些背景知识,包括您目前拥有的代码。 你可以这样设置一个 CPACK 变量:set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE $CMAKE_SOURCE_DIR/make/rpm/post") 在 post 脚本中运行你想要的任何东西。 【参考方案1】:

您可以将add_custom_command()POST_BUILD 参数一起使用。类似的东西:

add_custom_command(TARGET $MY_TARGET POST_BUILD COMMAND service my-service start)

【讨论】:

不,这些是构建过程的解决方案。我需要在安装后运行脚本。 好的,你可以这样做 install(CODE "execute_process(COMMAND systemctl enable wb-rules && service wb-rules start)") find here 这个方案也在deb包的创建过程中执行脚本。我正在寻找一种解决方案,允许脚本在用户计算机上安装 Debian 软件包期间运行。脚本应该在“apt-get install my_package.deb”之后执行 我认为这与 cmake 无关。

以上是关于使用 CPack 自动启动创建 deb 包 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何为使用 CPack 创建的 deb 包创建桌面图标?

CPACK_DEB_PACKAGE_COMPONENT 实际上做了啥?

制作 .deb 包时如何找出最低要求?

使用 cmake 创建多个 Debian 软件包

CPack / CMake:每个 CPACK_GENERATOR 的不同安装前缀

CMake 和 CPack。配置文件中的安装路径