명령어/Linux

[RHEL] rpmdev-vercmp 두 RPM 버전 크기 비교

jykim23 2026. 7. 16. 17:42
반응형

부제: 1.0.1-2 와 1.0.1-10, 뭐가 더 최신인가

rpmdev-vercmp 1.0 2.0             # EVR 두 개 비교
rpmdev-vercmp 1.0.1-2 1.0.1-10   # 릴리스까지 비교
echo $?                          # 11=앞이 최신, 12=뒤가 최신, 0=동일
$ rpmdev-vercmp 1.0 2.0
1.0 < 2.0
$ rpmdev-vercmp 1.0.1-2 1.0.1-10
1.0.1-2 < 1.0.1-10
$ rpmdev-vercmp --help
Exit status is 0 if the EVR's are equal, 11 if EVR1 is newer, and 12 if EVR2
is newer.

rpmdev-vercmp는 rpm의 버전 비교 규칙(epoch:version-release)을 그대로 적용해 두 버전의 우열을 가려준다. 문자열 정렬로는 210보다 커 보이는 함정을, rpm 규칙은 숫자 필드로 제대로 비교한다. 결과는 화면 출력과 종료 코드로 나오므로 스크립트 조건에 바로 쓸 수 있다.

이렇게도 쓴다

epoch·version·release를 각각 인자로 나눠 비교한다.

rpmdev-vercmp 0 1.0 1 0 1.0 2

 

종료 코드로 분기해 조건 처리한다.

rpmdev-vercmp 2.12-1 2.12-2; [ $? -eq 12 ] && echo "뒤가 최신"

 

설치된 버전과 후보 버전을 비교한다.

rpmdev-vercmp $(rpm -q --qf '%{version}-%{release}' hello) 2.12-3

 

인자 없이 실행해 대화식으로 입력한다.

rpmdev-vercmp

 

두 spec이 만들 NVR을 뽑아 서로 비교한다.

rpmdev-vercmp $(rpmspec -q --srpm --qf '%{version}-%{release}' a.spec) $(rpmspec -q --srpm --qf '%{version}-%{release}' b.spec)
반응형