OS/Linux

[Linux] RPM과 YUM이란? 내용 정리

yeit 2024. 4. 28. 17:17
728x90

 

RPM이란? 

  • 'Red Hat Package Manager'의 약자
  • 리눅스 시스템에서 소프트웨어를 설치, 업그레이드, 제거하는 데 사용되는 패키지 관리 시스템
  • 윈도우의 .exe와 비슷한 설치파일이며, RPM의 확장명은 .rpm

 

RPM관련 명령어

  • 설치 : # rpm -ivh 패키지명.rpm
    -i : RPM 패키지 설치
    -v : 설치 과정을 자세히 표시
    -h : 설치 진행 과정을 해시 표시(#)로 화면에 출력
  • 업그레이드 : # rpm -Uvh 패키지명.rpm
    -U : 패키지 업그레이드 (설치되어 있지 않은 경우 설치해 줌.)
  • 삭제 : # rpm -e 패키지명
    -e : 시스템에서 패키지를 제거
  • 시스템에 설치된 RPM패키지 확인하기 : # rpm -qa
    -qa : 시스템에 설치된 모든 RPM패키지 나열

 

하지만  RPM은 패키지를 설치할 때 필요한 다른 패키지에 대한 의존성 문제를 해결하지 못한다. 그래서 사용자들은 필요한 패키지를 직접 찾고 설치해야 한다는 번거로움이 있었다. 예를 들어 A 패키지를 설치하기 위해서 B 패키지가 필요할 경우, 사용자는 B패키지도 직접 찾아 설치해줘야 한다. 이와 같은 문제를 해결하기 위해서 나온 게 바로 YUM이다. 

 

 

 

YUM이란?

  • rpm 명령어의 패키지 의존성 문제를 해결하기 위해 나온 도구
  • 'Yellowdog Updater Modified'의 약자
  • RPM 기반 시스템에서 패키지를 관리하고 설치하는 데 사용되는 고급 패키지 관리 도구
  • 패키지 설치 또는 업그레이드 시에 필요한 모든 종속성 패키지를 자동으로 찾아서 함께 설치해 줌
  • 인터넷을 통하여 저장소(Repository)에서 필요한 파일을 가져와서 설치하는 방식

 

YUM관련 명령어

  • 설치 : # yum install <패키지명>
  • 업그레이드 : # yum update <패키지명>
  • 삭제 : # yum remove <패키지명>
  • 정보 확인 : # yum info <패키지명>
  • 패키지 리스트 확인 : # yum list <패키지명>
  • YUM 캐시 삭제 : # yum clean all 

 

YUM 설정 파일

  • /etc/yum.conf 파일 : 전반적인 Yum의 동작을 제어하는 데 사용되며, 특별히 변경할 필요 X
  • /etc/yum.repos.d/ 디렉터리* : yum 명령어를 실행하면 이 디렉터리에 있는 설정 파일들을 기반으로 패키지를 가져온다. 
$ /etc/yum.repos.d/CentOS-Base.repo 
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.

[base]
name=CentOS-$releasever - Base
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
  • [base] : 원본 패키지
  • [updates] : 업데이트 패키지
  • [extras] : 추가 패키지

 

YUM 저장소 설정 파일 예시

아래의 예시처럼 로컬 저장소와 외부 저장소를 설정해 줄 수 있다. 로컬 경로에 원하는 패키지가 있는 경우 로컬에서 다운하고, 이외의 경우에는 외부 네트워크를 통해 CentOS 패키지 저장소에서 다운로드해 온다. 이렇게 설정하면 내부에서 패키지를 가져오는 속도는 외부에서 가져오는 속도보다 더 빠르며, 네트워크 비용도 절감할 수 있다는 장점이 있다. 

$ vi /etc/yum.repos.d/example.repo

[local]
name=local
baseurl=file://<마운트 경로>
gpgcheck=0

[network]
name=Network
baseurl=http://mirrors.kernel.org/centos/7/os/x86_64/
gpgcheck=0
  • [repository_name] : 저장소 이름 지정
  • name : 저장소의 이름 지정
  • baseurl : 저장소의 주소 지정, baseurl에 설정된 대로 YUM이 패키지를 다운로드 받음
  • gpgcheck : 저장소에서 받은 패키지에 대한 GPG 체크 수행 여부
    1로 설정하면 체크를 수행하고, 0으로 설정하면 체크를 수행하지 않음

 

 

728x90