RPM 문서에 따르면,%pre,%우편,%preun그리고%postun스크립틀릿은 설치(제거) 진행을 위해 0을 반환해야 합니다.
(1)하지만 0이 아닌 값을 반환하는 스크립틀릿 중 하나의 효과는 무엇입니까?
(2)지금까지 수행한 작업을 취소하고 RPM 설치(제거)를 호출하기 전의 시스템을 그대로 유지합니까?
(삼)거래 메커니즘이 관련되어 있나요?
나는 문서(Fedora의 공식 문서를 포함한 많은 페이지)를 살펴보았지만 어떤 단서도 찾지 못했습니다(적어도 내가 이해한 '검은색 바탕'에는 아무것도 없습니다).
답변1
내가 찾은 정보의 출처는 다음과 같습니다. 레드햇 버그 216221 2006년 11월부터입니다. 다음 텍스트가 여전히 유효한지 여부는 알 수 없습니다.
게시물의 마지막 항목은 다음과 같습니다.
- 0이 아닌 코드로 종료되는 %pre 및 %preun 스크립트릿은 이전과 마찬가지로 설치/삭제가 실패하게 만듭니다. 다양한 패키지가 일부 조건에서 설치/제거를 방지하기 위해 이를 사용하므로 이 동작을 유지해야 합니다.
- 다른 스크립틀릿의 0이 아닌 종료 코드는 경고로만 처리됩니다(예: %postun 실패는 경고를 기록하지만 패키지는 어쨌든 제거됩니다).
- 신호 및 기타 "비정상적인" 방식으로 인해 죽어가는 스크립틀릿은 여전히 오류로 처리됩니다.
- 모든 스크립틀릿 오류에 대해 RPMCALLBACK_SCRIPT_ERROR 알림이 콜백에 발행되며, rpm이 경고 또는 오류로 처리했는지 여부를 알리기 위해 RPMRC_OK / RPMRC_FAIL이 포함된 "amount" 매개변수 및 "total" 매개변수에 전달된 실패한 스크립트의 태그가 포함됩니다.
답변2
부분적인 답변만 드릴 수 있지만, 도움이 되셨으면 좋겠습니다...
- 설치가 고려될 것입니다실패한, 그러나 afaik에는 실제 영향이 없습니다. 파일이 시스템 등에 계속 존재합니다. 그러나 스크립틀릿이 실패한 패키지를 제거하는 데 문제가 있었습니다
%preun
. - 실행 취소된 작업이 없습니다..
rpm
스크립틀릿에 입력한 명령을 실행 취소하는 방법을 마법처럼 알 수는 없습니다. - 거래 메커니즘이 관련되어 있는지는 잘 모르겠습니다. 이를 위해 몇 가지 테스트를 실행할 수 있습니다. 좋은 rpm과 깨진
%post
스크립트가 있는 rpm을 설치하는 것입니다.