본문 바로가기
Old Posts/Linux

[Linux] RPM 패키지 버전 의미 및 확인 방법

by A6K 2022. 2. 19.

RPM은 소프트웨어를 설치하고, 업데이트하고, 검증하고, 정보를 확인하고, 언인스톨하기 위해 사용할 수 있는 패키지 관리 소프트웨어다. RPM 패키지는 설치할 파일들의 아카이브와 패키지 이름, 버전, 의존성과 같은 패키지 정보로 구성되어 있다.

RPM 패키지 파일 이름 규칙

각 RPM 패키지는 하나의 파일에 담겨있다. 보통 RPM 패키지에 대한 정보를 조회해보지않아도, RPM 패키지 이름을 짓는 컨벤션(Convention)이 있기 때문에 파일의 이름에서 어느정도 정보를 얻을 수 있다.

예를 들어 다음 rpm 파일이 있다고 하자.

mysw-3.2-58.1.x86_64.rpm

이 rpm 패키지는 mysw라는 이름의 소프트웨어이며, 3.2 버전이고 58.1 릴리즈에 해당한다. 이 소프트웨어는 x86_64 아키텍처에 설치되기 위한 소프트웨어다.

RPM 파일은 다음과 같은 네이밍 컨벤션을 갖는다.

[name]-[version]-[release].[arch].rpm

[name]은 패키지나 프로그램의 이름이다.
[version]은 이 RPM 패키지에 있는 소프트웨어의 버전을 의미한다. 소프트웨어의 베이스 소스코드가 어떤 버전인지를 의미하는 경우가 많다.
[release]는 RPM 패키지 파일 자체의 버전을 의미한다. 소프트웨어의 베이스 소스코드와는 조금 다른 개념으로 소스코드에 몇 가지 패치가 더해진 버전일 수 있다. 소프트웨어 자체의 수정 대신 배포할 바이너리가 바뀌는 것으로 소프트웨어 버전과 약간 다르게 관리될 필요가 있는 경우 릴리즈 번호를 올린다.
[arch] RPM 패키지 파일의 컨텐츠의 특성을 설명하기 위함이다. 컨텐츠가 아키텍처 의존적이라면 x86_64 같은 이름이 붙게 되고, 의존적이지 않다면 noarch 같은 이름이 붙는다. 혹은 패키지의 내용이 소스코드라면 src 같은 이름이 붙는다.

RPM 이름에서 [version]과 [release]는 반드시 숫자일 필요는 없다. 사용자의 버저닝 정책에 따라 문자가 섞여 있을 수도 있다. 예를 들어, 1, 2, 3으로 올라가다가 마이너 업데이트의 경우 3a, 3b 이런식으로 쓰는 경우도 있다.

RPM 패키지 버전, 릴리즈 정보 확인

파일 이름에서도 알 수 있지만 RPM 패키지 내부적으로 버전 같은 메타 정보를 관리한다. 파일 이름에서 버전 정보를 얻을 수 없는 경우 rpm 명령어를 사용해야한다.

$ rpm -qp mysw.rpm
mysw-3.2-58.1.x86_64

패키지의 이름이나 버전, 릴리즈 정보를 각가 얻어오고 싶은 경우 이 값을 파싱해도 되지만 rpm 명령에서 특정 정보만 뽑을 수 있게 지원해준다.

$ rpm -qp --queryformat '%{NAME}' mysw.rpm
mysw

$ rpm -qp --queryformat '%{VERSION}' mysw.rpm
3.2

$ rpm -qp --queryformat '%{RELEASE}' mysw.rpm
58.1

$ rpm -qp --queryformat '%{ARCH}' mysw.rpm
x86_64

 

댓글