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 +用のバイナリパッケージは1つずつ必要です。

関連情報