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+용 바이너리 패키지가 하나씩 있어야 합니다.

관련 정보