2016-09-20 10 views
1

특정 버전의 패키지가 이미 설치되어있는 경우 rpm 설치를 중지하려고합니다.rpm yum install : 이미 설치된 패키지에 충돌을 넣는 방법?

2 패키지 A-7.1.1.rpm & Main_package-1.0.rpm이 설치되어 있다고 가정 해보십시오.

그리고 이미 컴퓨터에 A-1.4.0.rpm이 설치되어 있습니다. 그래서 내가 달성하고자하는 것은 A < 7.1.0의 설치 버전이 Main_package의 업그레이드가 발생하지 않아야한다는 것입니다.

다음과 같이 Main_package의 spec 파일에 Conflicts 태그를 넣으려고했습니다.
충돌, • < 7.1.0
그리고 여기 yum install *.rpm

냠 패키지 'A'는 디렉토리 (즉, A-7.1.1.rpm)에서, 그것은하지 않습니다의 최신 버전을 찾아 실행 충돌. 기계가 패키지 A의 특정 버전을 가지고 있는지 확인하고 싶습니다.

spec 파일에서 사용할 수있는 다른 태그를 찾을 수 없습니다.
이것을 수행 할 수있는 방법이 있습니까?

참고 : 나는 다음 yum install *.rpm

내가 다른 단지 yum install *.rpm, 아무것도 실행되지 수 호출하는 스크립트 내부에이 검사를 할 수 없습니다.

+0

충돌이 올바른 태그임을 참조하십시오. 'yum install'을 호출하면; 당신은 그것이 충돌하지 않는다고 말합니다. Yum은 A-7.1.1을 설치할 수 있어야하지만 main_package와 함께 설치할 수는 없습니다. yum은 둘 다 함께 설치할 수 있습니까? main_package에 올바른 충돌 태그가 설정되어 있는지 확인할 수도 있습니다. 'rpm -qp /path/to/Main_package-1.0.rpm --conflicts'을 사용하여 –

+0

PS : 두 사이트를 함께 질문하지 마십시오! 유닉스/리눅스에서 질문을 제거하십시오! –

+0

안녕하세요 Chris, 네. rpm -qp가 올바른 충돌을 표시합니다. 두 가지를 함께 설치하면 설치가 완료됩니다. 왜냐하면 yum은 충돌 태그에서 언급 한 것보다 버전이 많기 때문입니다. 하지만 main_package 만 설치하려고하면 충돌이 일어나고 있습니다. 내가 비교하고 싶은 것은 이미 설치된 패키지 A-1.4.0에 대한 것입니다. 다른 사이트에서 질문을 삭제하겠습니다. –

답변

0

이 해결책이지만, 그렇지 않은 매우 깨끗하고하지 않는 것이 좋습니다 :

%pre 
if [[ $(rpm -q A --qf "%{VERSION}-%{RELEASE}") == "1.4.0" ]] 
then 
    # abort installation in this case! 
    exit 1 
fi 

: 당신이 당신의 패키지 다른 버전이 설치 및 중단 여부를 설치의 전 섹션에서 확인하실 수 있습니다 자세한 내용은 related question을 참조하십시오.

나는 그것이 매우 추한 솔루션이기 때문에 당신이 당신의 디자인을 재고해야한다고 생각 (그리고 A-7.1.1이 % 사전 섹션이되지 않으며, 따라서 여전히 문제없이 설치할 수 있습니다) 냠

+1

사용자는 설치를 중단하고 권장되는 해결 방법을 볼 수있는'stderr' 명령을 쓸 수도 있습니다 –

+0

아직 % pre를 시도하지 않았습니다. 나는 내 디렉토리에 4 ~ 5 RPM을 가지고있다. yum install * .rpm을 실행하면 단일 트랜잭션이됩니다. 첫 번째 rpm이 % pre 섹션에서 실패하면 yum은 나머지 트랜잭션을 설치하려고 시도합니다. 이것은 나의 이해이다. 틀 렸으면 고쳐줘. –

+0

내가하려고하는 또 하나의 점은 이전 설치의 일부로 더미 파일을 만지는 것입니다. 업그레이드하는 동안 'requires'태그를 사용하여 해당 파일의 존재 여부를 확인합니다. 그러나 '요구 사항 : 파일 위치'가 도움이되지 못했습니다. –