본문 바로가기

OS/Linux

#13. RPM & YUM

이번소개에서는 페키지들과 관련있는 명령어 RPM & YUM에 대해서 소개 해드리겠습니다.

저희가 윈도우즈를 사용할때도 컴퓨터에 깔려있지 않은 프로그램은 직접 다운을 받거나 옮겨서 설치를하죠. 리눅스도 마찬가지로 설치되어 있지 않은 기능들은 직접 설치를 해줘야합니다. 이렇게 설치하기 위해서 필요한 것이 페키지 입니다.


페키지를 설치할수있는 명령어는 RPM과 YUM이있는데요,먼저RPM부터 살펴보도록 할께요.


1.RPM (Redhat Package Manager)


리눅스 안에 존재하는 페키지를 설치, 삭제 또는 업그레이드 등등, 편리하도록 도와주는 시스템 입니다. RPM은 페키지를 설치 하기전에 설치하려는 해당 페키지가 필요로 하는 의존성 페키지가 깔려 있지 않다면, 해당 의존성 페키지들 부터 먼저 깔아줘야 합니다.


RPM 페키지파일 이름의 구성


페키지명-버전.아키텍쳐.rpm


페키지명: 해당 페키지가 무슨 페키지 인지 알려주는 이름

버전: 해당 페키지의 버전을 표시

아키텍쳐: 해당 OS(리눅스)의 특정한 버전/비트 이상 깔수있는 제한


이렇게 3가지로 구분 할수있습니다. 페키지명과 버전은 확실히 구분 할수 있도록 하는것이 좋습니다. 설치나 삭제 할시 필요로 하는 파일이름이 페키지명이 될수도, 페키지명과 버전을 합쳐놓은 RPM파일명이 필요 할수도 있기때문이죠.


RPM mode

install   ( rpm -i[옵션(-로 시작하는 옵션)] [rpm파일명] [옵션(--로 시작하는 옵션)])

RPM파일을 설치 하는 명령어 입니다. 하지만 동일한 페키지가 설치되어있을 경우 버전과 상관없이 설치가 불가능합니다.


upgrade ( rpm -U[옵션(-로 시작하는 옵션)] [rpm파일명] [옵션(--로 시작하는 옵션)])

동일한 페키지가 설치 되어있을경우, 버전을 비교하여 구버전은 삭제 하고 신버전으로 설치를 합니다.

동일한 페키지가 설지 되어있지 않을경우엔 install과 같은 기능을 수행합니다.


eraserpm -e[옵션(-로 시작하는 옵션)] [페키지명] [옵션(--로 시작하는 옵션)])

설치되어 있는 페키지를 버전과 상관없지 삭제합니다.

**삭제 모드의 경우엔 rpm파일명이아닌 페키지명을 입력하여 버전을 무시하고 삭제



option

-v    작업 과정을 출력

-h    작업 진행률을 #(hash)마크를 이용하여 보여줌


--force 강제 작업(에러무시, 설치시 덮어씌우기)

--nodeps 페키지의 의존성 페키지를 무시하고 설치/업그레이드


RPM 질의

rpm -qa        시스템에 설치되어있는 모든 페키지 목록을 출력



예제

rpm -ivh acl-7.0.103.i386.rpm

해당 경로에 존재 하는 acl-7.0.109.i386.rpm 페키지를 시스템에 설치하면서

설치 과정과 진행률도 같이 출력

만약 의존성 페키지가 존재하면, 의존성 페키지를 무시하고 설치


rpm -Uvh acl-8.0.103.i386.rpm --nodeps

해당 경로에 존재 하는 acl-8.0.103.i386.rpm 페키지를 업그레이드. 이미 시스템에 7.0버전이 설치 되어있으므로 7.0버전을 삭제후 8.0버전으로 설치

8.0버전으로 업그레이드중, 의존성 페키지가 존재한다면 무기하고 업그레이드 진행

설치/삭제 진행 과정과 진행률 또한 출력


rpm -evh acl

acl 페키지를 삭제 하며 삭제 진행과정과 진행률 출력


rpm -qa | grep acl

시스템에 설치되어있는 acl 관련 페키지 모두 출력




2.YUM (Yellowdog Update Manager)


특정한 서버주소로부터 신버전의 페키지들을 검사하여 다운로드&설치를 해주는 기능

의존성 페키지가 존재한다면, 자동적으로 모두 설치 (설명처럼 인터넷이 가능해야만 사용할수 있는 기능)


yum list        업데이트 가능한 페키지 모두 출력

yum update   업데이트 가능한 모든 페키지 업데이트

yum -y [install/update/remove] [페키지명]    해당 페키지를 설치, 업데이트 또는 삭제

*rpm파일명(버전포함)이 아닌 단순 페키지명입니다.


예제

yum list        update전에 무슨 페키지들을 업데이트 할수있는지확인

yum udate    list를 확인후 모든 업그레이트 가능한 페키지 업그래이드


yum -y update acl

acl버전을 확인한후 최신 버전이 존재할경우 업데이트

acl이 깔려있지 않다면 설치