我一直在创建 RPMS(使用 CMake 的 CPack),将所有内容安装到 中/opt
,然后安装后脚本将服务定义文件复制到/etc/systemd/system
。
我也尝试过在 RPM 安装后和卸载前脚本中启动和停止服务,但这似乎不是一个好主意,因为yum
如果进行升级,则会在卸载前脚本之前运行安装后脚本,这意味着如果您尝试升级服务,最终服务将无法运行。即使启用/禁用似乎也有同样的问题。
所以我有两个问题
直接安装到 是否是个好主意
/etc/systemd
,还是应该在安装后将 复制/opt
到/etc/systemd
?cp
接下来是systemctl daemon-reload
安装服务文件的“正确”方法吗?有没有一种干净的方式
starting/stopping/enable/disable
从 RPM 中提供服务,或者最好将其排除在 RPM 之外?
与 Debian 相关的问题(尚无答案):
答案1
看: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_systemd
在脚本中,您可以使用 $1 变量来检测是升级还是全新安装,还是升级还是删除包。变量的值定义如下: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_syntax