개인/리눅스

[리눅스] 레드햇 계열의 패키지관리 (RPM,YUM)

OmeGa2 2020. 2. 11. 18:37

레드햇 계열의 패키지관리

리눅스에서 사용하는 프로그램들 대부분은 소스코드와 컴파일도구 및 관련문서들이 포함되어 전문가들에겐 수정하면서 유용하게 사용할 수 있으나 초보자가 설치하거나 사용하기엔 어려움이 있다.

 

따라서 리눅스의 배포판에서는 프로그램의 쉬운 설치, 삭제, 관리를 위해 각 계열마다 독자적인 패키지 관리기법을 사용한다. 

 

리눅스의 배포판 중 하나인 레드햇 계열에서는 패키지 관리기법으로 RPM과 YUM을 사용한다.

 

RPM 은 Red Hat Package Manager의 약자로 프로그램을 .rpm 형태의 파일로 배포한다.

 

rpm 파일의 형식

(패키지이름-버전-릴리즈-아키텍처.rpm)

ex) httpd-2.4.6-3.fc21.x86_64.rpm

httpd  : 패키지 이름 = 어떤 프로그램의 패키지인지 나타낸다.

2.4.6   : 버전 = 패키지의 버전을 말한다.

3.fc21 : 릴리즈 = 한 버전의 패키지가 몇 번 빌드되었는지 나타낸다. (리눅스버전을 같이 명기하는 경우도 있다.)

x86_64 : 아키텍처 = 패키지를 사용할 수 있는 시스템을 말한다.

 

 

rpm 명령어를 통해 할 수 있는 작업은 설치 및 갱신, 제거, 질의, 검증모드, 리빌드모드 총 5가지로 나눌 수 있다.

 

 

rpm 설치 및 갱신 모드

]# rpm [옵션] [패키지 파일명]

-i : 새로운 패키지를 설치할 때 사용 (--install)

-U : 기존패키지를 업그레이드할 때 사용 (--upgrade)

-F : 이전 버전이 설치되어 있는 경우에만 설치 (--freshen)

-v : 설치중에 상황을 메시지로 자세히 보여준다.

-h : 설치상황중 진행률을 #기호로 보여준다. (--hash)

--force : 기존버전이 있을경우에도 강제로 설치한다.

--nodeps : 의존성 관계를 무시하고 설치한다.

(보통은 의존성 관계가 있는 경우 설치되지 않는다.)

새로운 패키지를 설치하거나 갱신할 때 사용되는 모드이다.

패키지를 설치할 때는 rpm -ivh 명령어로 가장 자주 사용되며 이는 새로운 패키지를 설치할 때 상황이나 진행률을 확인할 수 있다.

 

 

 

rpm 제거 모드

]# rpm -e [패키지명]

 = 설치된 패키지를 제거하며, 의존성이 있는경우 제거되지 않는다.

--nodeps : 제거할 패키지가 의존성이 있는 경우에도 무시하고 제거한다.

--test : 실제로 제거하지않고, 테스트한다. (보통 -vv와 같이 사용)

--allmatches : 동일한 이름의 패키지가 중복설치된 경우, 모두 제거한다.

설치된 패키지를 제거한다. rpm에서 패키지를 제거할 때 -e 옵션을 사용하는데, 다른 패키지와

의존성이 발생한 경우 제거되지 않는다.

 

따라서 의존성이 있는 패키지를 제거할 때는 먼저 관련 패키지를 제거하거나 --nodeps 옵션을 사용한다.

 

 

 

rpm 질의 모드

]# rpm -q [패키지명]

 = 질의 시에 꼭 사용하는 옵션이다.

-i : 설치된 패키지의 정보를 확인할 수 있다.

-l : 패키지에서 설치한 모든 파일정보를 출력한다.

-a : 시스템에 설치된 모든 패키지목록을 출력한다.

-p [패키지파일명] : rpm 패키지 파일에 대한 정보를 보여준다.

-f [파일명] : 지정한 파일을 설치한 패키지명을 출력한다.

-c : 해당 패키지의 설정파일을 출력한다.

-d : 해당 패키지의 문서파일을 출력한다.

-R : 해당 패키지의 의존성을 보여준다. (동작시 필요한 다른 패키지목록)

패키지 관련 정보를 알아내기 위해 -q옵션을 사용한다.

-q 옵션을 사용하면 패키지의 설치유무나 간단한 버전정보를 확인할 수 있다.

더욱 자세한 정보를 보기 위해서는 -i,-a 등의 옵션과 연동해서 사용한다.

 

 

 

검증 모드

]# rpm -V [패키지명] 

 = 검증시 사용하는 기본옵션

 

관련 검증코드

S : 파일 크기 변경

M : 파일 모드 변경

5 : 메시지 다이제스트 변경

D : 장치 파일의 메이저 및 마이너 번호 불일치

L : 링크파일 경로 불일치

U : 소유자 변경

G : 그룹 소유권 변경

T : 수정 시간 변경

P : 권한 변경

rpm 데이터베이스에 저장되어 있는 패키지의 메타데이터 정보를 이용해서 변경된 정보를 찾아내는 모드이다.

 

검증모드는 -V(verify)옵션을 사용하고 파일의 크기와 허가권 및 소유권 등 파일 형식에 대한 변경 정보를 출력한다.

 

 

yum (Yellowdog Updater, Modified) 

RPM명령으로 패키지를 설치할 때는 해당 프로그램의 요소들을 일일이 다운받아야 하는 번거로움을 가지고 있으며 그 중 가장 큰 문제로는 의존성이 있다.

 

rpm에서 가장 빈번한 의존성 문제를 쉽게 해결할 수 있는 방법이 yum 을 이용하는 것이다.

 

yum은 rpm기반의 시스템에서 패키지를 쉽게 설치하고 자동으로 업데이트를 수행해주는 유틸리티이다. 또한 yum에서는 네트워크를 통해 의존성을 검사해서 설치 및 업데이트를 수행하기 때문에 자동으로 의존성 문제가 해결된다.

 

따라서 현재는 rpm명령어 보다는 yum을 통해 패키지를 관리하는 경우가 많다.

 

 

yum 사용법

]# yum [옵션] [command] [패키지명]

-y : 모든 질의에 yes라고 답한다.

-v : 자세한 정보 출력

 

[command list]

list                : 전체 패키지에 대한 정보 출력 

info               : 해당 패키지에 대한 정보 출력

check-update  : 업데이트가 필요한 패키지 출력

update           : 패키지 업데이트

install             : 패키지 설치 (의존성관련 패키지 자동설치)

search            : 패키지 검색

remove / erase : 패키지 삭제

 

 

1. 패키지 버전정보 확인

 

yum list 명령을 통해 설치되어있는 전체 패키지 정보를 확인할 수 있다.

이후 grep 명령을 통해 원하는 항목만 골라서 보면 된다.

 

list 명령에서는 패키지의 정보 이외에 상태도 확인할 수 있다.

설치가 되어있는 패키지는 installed로 나타나며, 업데이트가 가능한 항목은 updates로 나타난다.

따라서 확인한 vim 패키지는 모두 업데이트가 가능한 상태라고 볼 수 있다.

 

또한 패키지의 상태 (installed , updates)로 따로 검색할 수도 있다.

yum list installed = 설치된 패키지만 검색

yum list updates = 업그레이드 가능항목만 검색 (yum check-update와 동일)

 

 

2. 해당 패키지의 상세정보 확인

 

list 명령에서는 패키지의 버전과 업그레이드여부만 확인할 수 있었다.

해당 패키지의 상세정보를 확인하기 위해서는 info 명령을 사용해야 한다.

 

info에서는 해당 패키지를 사용하기 위해 필요한 다른패키지와 URL정보 등이 들어있다.

 

 

3. 패키지 업데이트

 

yum update [패키지명] 명령을 통해 패키지를 업데이트 할 수 있다.

 

업데이트가 필요한 패키지는 yum list update 명령으로 확인할 수 있다.

 

yum update 명령을 사용하면 현재 패키지 상태가 updates인 패키지 모두 업데이트할 수 있다.

 

 

update 전
update 후

vim-common 패키지의 상태는 update 전 updates로 표시되어 있다.

[yum update vim-common] 명령을 통해 업데이트 이후 상태를 확인해보면 @updates로 나타난다.

이로써 정상적으로 업데이트가 완료된 것을 확인할 수 있다.

 

 

4. 패키지 설치

 

yum list로 패키지를 확인했을 때 base 상태는 저장소를 식별할 수 있는 id를 나타낸다.

확인된 telnet 패키지는 저장소에는 존재하지만 설치되지 않은 패키지다.

 

install 명령을 통해 가지고있는 telnet 패키지를 설치할 수 있다.

 

yum install [패키지명] 을 통해 해당 패키지를 설치할 수 있으며 -v옵션으로 설치중에 자세한 정보를 확인할 수 있다.

 

설치된 패키지는 @base 상태로 나타난다.

 

 

5. 패키지 삭제

 

remove 사용
erase 사용

yum을 통한 패키지 삭제는 remove, erase 두 가지를 사용하며 두 명령어가 동일한 형식으로 쓰이기 때문에 사용자에 따라 편한대로 사용하면 된다.

 

 

telnet 패키지를 삭제한 뒤 다시 확인해보면 @base 상태이던 패키지가 base상태로 표시된다.