2013-02-07 3 views
1

rpm pacakge를 구축 중이지만이 시나리오를 발견했습니다. 내 rpm 스크립트가 실패하면 rpm은 여전히 ​​내 시스템에 설치된 것으로 간주됩니다. 오류가 내 rpm 스크립트에서 발견 된 경우, 내 코드에서 'rpm -e'를 호출하고 스크립트를 제거 할 수있는 정리 논리를 추가하려고합니다. 그러나 그것은 약간 kludgy 보인다. 스크립트가 실패 할 경우 rpm이 제거되었는지 확인하는 더 깨끗한 방법이 있습니까?rpm 패키지 오류, 패키지가 여전히 설치되었습니다.

감사합니다.

+0

사양 파일에 예제가 있습니까? 이 파일은 spec 파일의 % post 섹션에 있다고 가정합니다. 왜 그냥 % pre 섹션에 넣은 다음 스크립트가 실패하면 종료합니까? – Forrest

+0

패키지를 설치 한 후에 만 ​​사용할 수있는 특정 파일에 액세스해야하기 때문에 % post에서 수행합니다. % post 단계의 어떤 것이 실패하면 스크립트는 종료되고 오류를 출력하지만 "rpm -qa | grep '패키지 이름'을 수행하면 rpm이 여전히 설치된 것으로 간주됩니다. 스크립트가 실패하면 현재 패키지를 수동으로 제거하기 위해 스크립트에 논리를 추가하려고합니다. (또한 % 게시물에) 섹션. 이것이 좋은 방법일까요? – user459811

+1

Aaron의 답변에 따르면 작동하지 않는다고 말하면 스크립트를 실행하는 대신 % post 섹션으로 코드를 마이그레이션해야합니다. – Forrest

답변

2

수 없습니다. %pre이 실패하고 설치되지 않았거나 설치되었습니다. 거래를 위해 RPM DB가 잠겨 있기 때문에 rpm -e으로 전화 할 수 없습니다.

무언가가 실패하면 STDERR으로 편지를 쓰고 chkconfig을 실행하여 서비스를 해제해야 다음 번에 다시 부팅 할 수 없습니다.