RPM 事务后重新启动服务

RPM 事务后重新启动服务

我有一个 RPM 包,它更新配置文件,因此需要重新启动该服务(rsyslog)。我支持的平台包括预系统版本(centos6)和系统版本(centos7+)。我的问题是检查 systemd 是否存在以及在哪里运行此更新后重新启动任务的最佳方法是什么?据我所知,这应该足够了:

%posttrans
if test pidof systemd = 1; then
    systemctl restart rsyslog
else
    service restart rsyslog
fi

答案1

  1. servicesystemctl可用时可以使用。它将打印有关重定向到 /bin/systemctl 的通知,您可以安全地忽略它。因此,您可以使用:

    %posttrans
    service rsyslog restart
    

请注意,正确的顺序与您在问题中使用的顺序不同。

  1. 或者您可以使用 %rhel 宏。

    %posttrans
    %if 0%{rhel} >=7
       systemctl restart rsyslog
    %else
       service rsyslog restart
    %endif
    

但这是在构建时评估的。因此,您必须有一个用于 EL6 的二进制包,另一个用于 EL7+ 的二进制包。

相关内容