Linux

Linux - 레드햇 패키지 관리기법 : RPM

j9m 2022. 10. 12. 11:25
반응형

RPM

레드햇사에서 만든 패키지 관리 기법으로 프로그램을 .rpm 형태의 파일로 배포하고, rpm 명령을 사용하여 손쉽게 설치 및 갱신, 제거, 검증, 질의 등의 관리를 할 수 있다. 배포되는 rpm파일의 형식은 다음과 같다.

패키지이름-버전-릴리즈.리눅스버전.아키텍처.rpm
구성 설명
패키지이름 어떤 패키지인지를 알려주는 패키지의 이름을 나타낸다.
버전 패키지의 버전을 의미한다.
리눅스 버전 기준이 되는 리눅스 버전을 나타낸다.
아키텍처 패키지가 사용 가능한 시스템을 의미한다.

 

rpm 사용법

rpm 명령의 사용법은 설치 및 갱신, 제거, 질의, 검증 모드와 소스 rpm(.src.rpm)의 리빌드 모드 등 총 5가지로 나눌 수 있다.

rpm [option] [패키지_파일명]

 

① 설치 및 갱신(install & upgrade) 모드

새로운 패키지를 설치하거나 갱신을 할 수 있다.

 

■ 주요 옵션

옵션 설명
-i 새로운 패키지를 설치할 때 사용한다. 기본적으로 이전 버전의 같은 패키지가 있을 경우 설치가 되지 않는다.(--install)
-U 기존의 패키지를 새로우 ㄴ버전의 패키지로 업그레이드할 때 사용한다. 만약 설치된 패키지가 없을 경우에도 새로운 버전을 설치할 수 있는데 이 경우에는 -i 옵션과 같다고 볼 수 있다.(--upgrade)
-F 이전 버전이 설치되어 있는 경우에만 설치한다.(--freshen)
-v 메시지를 자세히 보여준다.(--verbose)
-h 설치 상황을 '#' 기호 표시해 준다.(--hash)
--force 기존 버전이 설치되었을 경우처럼 강제로 설치할 때 사용한다. (--oldpackages, --replacefiles, --replacepkgs와 같이 3개의 옵션을 포함한다.)
--nodeps 의존성 관계를 무시하고 설치한다. rpm 설치 시에 의존성 관계에 있는 패키지가 존재하지 않을 경우에는 설치가 되지 않는데, 그런 경우 강제로 설치할 때 사용한다.
-vv 메시지를 아주 자세히 보여준다.
--test 실제로 파일에 기록하는 작업을 제외한 대부분을 테스트할 때 사용한다. 패키지를 실제 설치하기 전에 제대로 설치되는지 테스트해 볼 경우에 사용한다. 보통 --vv와 같이 사용한다.
--rebuilddb 특정한 패키지 설치 후에 rpm패키지를 검색했으나 나타나지 않을 때 rpm 데이터베이스를 업데이트할 때 사용한다.

 

■ 사용 예

해당 rpm패키지를 설치한다.

rpm -i gftp-2.0.19-fc15.i686.rpm

 

해당 패키지를 업그레이드 설치해주고, 메시지와 진행상황을 '#' 기호로 출력한다.

rpm -Uvh vsftpd-2.2.2-11.el6_4.1.i686.rpm

 

현재 설치된 패키지만 찾아서 업데이트하고, 메시지와 진행상황을 '#' 기호로 출력한다.

rpm -Fvh /usr/localsrc/*.rpm

 

② 제거(erase) 모드

설치된 패키지를 제거한다. 패키지를 제거할 때는 -e 옵션을 사용하는데, 다른 패키지에 대한 의존성이 발생한 경우에는 제거되지 않는다. 의존성이 발생한 패키지를 제거하기 위해서는 먼저 의존성 관련 패키지를 제거하거나, 추가로 --nodeps 옵션을 지정해야 한다.

 

■ 주요 옵션

옵션 설명
-e 설치된 패키지를 삭제한다. 의존성을 갖는 패키지가 있는 경우에는 삭제되지 않는다.(--erase)
--nodeps 의존성을 갖는 패키지가 존재하는 경우에도 삭제한다.
--test 실제로 제거하지 않고, 테스트를 한다. 보통 -vv 옵션과 함께 사용한다.
--allmatches 동일한 이름을 갖는 패키지가 중복 설치되어 있는 경우에 모두 제거한다.

 

■ 사용 예

eog라는 패키지를 제거한다. 의존성이 있는 패키지가 존재할 경우에는 제거되지 않는다.

rpm -e eog

 

httpd라는 패키지를 제거하는데, 의존성이 있는 패키지가 존재할 경우에도 제거한다.

rpm -e httpd --nodeps

③ 질의(query) 모드

패키지 관련 정보를 알아내기 위해 -q 옵션을 사용한다. -q 옵션만 사용하면 패키지 설치 유무나 간단한 버전 정보만 출력한다. 더욱 정확한 정보 출력을 위해서 -i, -a, -l, -d 등의 옵션과 연동해서 쓴다.

 

■ 주요 옵션

옵션 설명
-q 질의 시에 꼭 사용해야 하는 옵션이다. 패키지를 찾으면 패키지 이름과 버전만 표시한다.(--query)
-i 설치된 패키지의 정보를 출력한다. -p 옵션과 같이 사용하면 rpm 패키지 파일에 대한 정보를 알 수 있다.(--info)
-l 패키지에서 설치한 모든 파일 정보를 출력한다. 역시 -p와 함께 사용하면 rpm 패키지 파일이 설치되는 목록 파일을 알 수 있다.(--list) 
-a 시스템에 설치된 모든 패키지 목록을 출력한다.(--all)
-p 패키지_파일명 rpm 패키지의 파일에 대한 정보를 보여준다. 이 옵션을 사용하려면 패키지 파일의 정확한 이름을 입력해야 한다.(--package)
-f 파일명 지정한 파일을 설치한 패키지 이름을 출력한다.(--file)
-c 해당 패키지의 설정 파일이나 스크립트 파일을 출력한다.(--configfiles)
-d 해당 패키지의 문서 파일을 출력한다.(--docfiles)
-R 어떤 패키지에 의존하고 있는지를 보여준다. 즉, 해당패키지가 설치되거나 동작 시에 필요한 패키지 목록을 보여준다.(--requires)
--changelog 특정 패키지의 바뀐 내역을 최근부터 연대순으로 보여준다.
--scripts 설치 및 제거 관련 스크립트를 보여준다.
--filesbypkg rpm패키지가 많을 경우 목록으로 보이는 파일 앞에 패키지명을 붙인다.
--queryformat 질의의 결과를 원하는 형태로 출력할 때 쓴다. C언어 printf() 함수의 동작 방법과 유사하다.(--qf)

 

■ 사용 예

시스템에 설치된 모든 패키지 정보를 출력한다.

rpm -qa

 

시스템에 설치된 모든 패키지 중에 mail이라는 문자열이 들어있는 패키지를 출력한다.

rpm -qa | grep mail

 

sendmail 패키지에 대한 정보를 출력한다.

rpm -qi sendmail

 

sendmail 패키지가 설치한 파일 목록을 출력한다.

rpm -ql sendmail

 

sendmail 패키지 관련 환경 설정 파일이나 실행 데몬 스크립트를 출력한다.

rpm -qc sendmail

 

/bin/ls 파일을 설치한 패키지 정보를 출력한다.

rpm -qf /bin/ls

 

④ 검증(Verify) 모드

검증 모드는 rpm 데이터베이스에 저장되어 있는 패키지의 메타데이터 정보를 이용하여 변경된 정보를 찾아내는 모드이다. 검증 모드는 -V(--verify) 옵션을 사용하고 파일의 크기, 허가권, 소유권, 파일 형식 등에 대한 변경 정보를 출력한다. 관련 검증 코드는 다음의 표와 같다.

 

■ 검증 코드

코드 설명
S 파일 크기(File Size) 변경
M 파일 모드(Permission & File Type) 변경
5 메시지 다이제스트(Message Digest) 변경(보통 MD5 값 변경)
D 장치 파일의 메이저 및 마이너 번호 불일치
L 링크 파일 경로 불일치
U 소유자 변경
G 그룹 소유권 변경
T 수정 시간 변경
P 권한 변경
. 테스트 통과
? 테스트를 수행하지 못했을 경우(예를 들면 허가권 거부 등)

 

■ 주요 옵션

옵션 설명
-V 검증 시 사용하는 기본 옵션이다.(--verify)
-a 모든 패키지를 검사할 때 사용한다.

 

■ 사용 예

시스템에 설치된 모든 패키지를 검증한다.

rpm -Va

 

vsftpd 패키지를 검증한다.

rpm -V vsftpd

 

 

⑤ 리빌드(rebuild) 모드 : rpmbuild

rpm 소스 파일인 .src.rpm 파일을 패키지 파일로 만드는 모드로서 rpmbuild라는 명령어를 사용한다.

옵션 설명
--rebuild 소스 rpm 파일을 이용해서 rpm 패키지를 생성할 때 사용한다.

 

■ 사용 예

root가 실행했을 경우에 /root/rpmbuild 디렉터리 안에 생성한다. 만약 x86_64 기반에서 리빌드 했을 경우 rpm 패키지 파일은 /root/rpmbuild/RPMS/x86_64 디렉터리에 생성된다.

rpmbuild --rebuild gftp-2.0.19-8.fc18.src.rpm

 

참고자료
CentOS 7으로 리눅스마스터 1급 정복하기 
반응형