1

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

我用谷歌搜索了关于这个的信息。我发现 SET(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA, ./script/postinst) 可以做到这一点。所以我喜欢这样,但它没有用。

我喜欢这样:

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

设置(CPACK_GENERATOR“DEB”)

设置(CPACK_PACKAGE_NAME“mydeb”)

设置(CPACK_PACKAGE_VERSION“1.0”)

设置(CPACK_DEBIAN_PACKAGE_MAINTAINER “乔治”)

设置(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA,./script/postinst)

设置(CPACK_PACKAGING_INSTALL_PREFIX “usr”)

包括(CPACK)

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

如果有些事情是错的?我需要帮助

4

2 回答 2

1

我以同样的方式这样做。在我的情况下,我使用set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA, ./script/postinst)设置系统服务以在启动时运行。

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

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

于 2021-01-13T10:36:47.700 回答
0

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

于 2014-02-19T02:21:28.400 回答