이전 버전이 존재하지 않는 경우에만 패키지를 "rpm -i"하는 방법은 무엇입니까?

이전 버전이 존재하지 않는 경우에만 패키지를 "rpm -i"하는 방법은 무엇입니까?

쉘 스크립트에서 일부 RPM 패키지를 설치하고 싶습니다. 모든 패키지가 실제로 설치되었는지 확인하고 싶지만 이미 이전 버전이 설치된 패키지를 업데이트하고 싶지 않습니다(심층적인 종속성 해결을 피하기 위해).

이전 버전이 설치된 경우 오류 코드를 반환하지 않지만 그렇지 않은 경우에는 오류 코드를 반환하는 방식으로 이를 어떻게 구현할 수 있습니까? 이를 통해 스크립트의 올바른 실행을 제어할 수 있습니다.

답변1

시스템에 있는 패키지를 기반으로 설치할 수 있습니다.

 rpm -q mypackage || rpm -i mypackage.rpm

답변2

다음 명령을 사용하십시오 rpm -q mypackage && rpm -i mypackage.rpm. rpm 쿼리가 성공하면 rpm 패키지 설치가 계속됩니다. 그렇지 않고 쿼리가 실패하면 설치가 계속되지 않습니다. 그러나 ||대신 을 사용하면 &&패키지를 쿼리하는 이전 명령이 실패하더라도 여전히 패키지 설치를 시도하므로 의미가 없습니다.

답변3

해당 패키지가 설치되어 있는지 먼저 테스트해보고, 설치되어 있지 않으면 설치해 볼까요? 당신이 쓴 것처럼, 당신은 일종의 if-clause인 쉘 스크립트에서 이것을 달성하기를 원합니다.

의사코드:

if is_installed($package)
then
  return is_already_installed
else
  rpm -i $package
  return $?
fi

첫 번째 부분은 현재 설치된 버전(예: 스크립트의 최종 보고서)에서 다른 테스트를 수행하여 확장할 수 있습니다.

답변4

도움이 될 수도 rpm -q <package name>있고 rpm -U업그레이드할 수도 있습니다.

관련 정보