【问题标题】:Create deb package with autostart by CPack [closed]使用 CPack 自动启动创建 deb 包 [关闭]
【发布时间】: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 脚本中运行你想要的任何东西。

标签: bash cmake systemd cpack


【解决方案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 无关。
猜你喜欢
  • 2011-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
  • 2021-10-14
相关资源
最近更新 更多