2012-12-31 3 views
0

하나의 RPM에서 여러 RPM을 설치하려고합니다. install.i는 % POST 섹션에 spec 파일을 작성하고 다른 rpm 명령을 설치합니다. rpm에서 RPM 설치

%post 
rm -f /var/lib/rpm/__db.0* 
rpm --rebuilddb 
rpm -ivh xyz.rpm 

그러나 주요 RPM이 때 잠금이는 다음과 같은 경고를 제공 install.so 상기 다른 RPM을 위해 해제하고 설치를 중지 process.and 무한 기다릴 얻을 것이다 설치합니다. 그래서 그 어떤 해결책이든.

+2

"하지 마세요"의 전형적인 경우입니다. 특히 RPM 자체가 활성화되어있는 동안 RPM DB를 폐기하는 것이 좋습니다. rpm 주위에서 작업하지 마십시오. @Forrest에서 언급 한대로 적절한 Requires : 태그를 사용하십시오. –

답변

0

S.O 날 이전 답변에 댓글을 추가 할 수있을뿐만 나는 한 가지를 강조하고 싶었 : NO WAY는이 RPM-I % 포스트 동안이 일을하려고 일을 계획 없다

. RPMdb를 잠 그려면 RPMdb를 잠그고 경쟁 조건과 손상을 방지하기 위해이 작업을 수행합니다. 따라서 다른 솔루션을 찾아야합니다.

하나의 솔루션이 있으며, 지금까지는 Requires : bit가 있습니다. 현재 xyz rpm을 설치 한 후 xyz rpm을 설치하려고한다는 것을 알고 있지만 '설치 후'가 없습니다. 왜냐하면 우리는 '이동'을 사용하는 것과 같은 이유로 post-requires가 필요하기 때문입니다.

따라서 Requires : 태그를 사용하십시오. abc.rpm에 따라 abc.rpm을 사용하거나 abc.rpm에 따라 xyz.rpm을 사용하는 주문이 완벽하지 않은 경우 페이로드를 제공하지 않지만 두 가지 모두를 요구하는 세 번째 '가상'RPM을 빌드하십시오. 이 마지막 해결책은 두 패키지가 모두 설치되도록합니다.

다른 사람들은 Requires : 태그를 추천하고 % post에서 rpm-i의 대안에 대해 이야기했지만 %를 직접 사용하여 rpm을 사용할 수있는 잠재력을 발견하지 못했습니다. 나는 가까운 장래에 제안 된 계획이 효과가 있다는 것을 영업 담당자가 알았 으면 좋겠다.