[Linux] RPM & YUM

728x90

RPM 관련 패키지 정보 확인 명령어

RPM 사용법

  • 프로그램(패키지)을 쉽게 설치하기 위한 도구
  • 설치된 패키지 확인 가능
  • 제거된 패키지 파일 잔재 추적
  • 지원 패키지 확인
  • 업데이트 시 기존 패키지 제거 후 새 버전 설치
  • 패키지 이름을 보고 아래처럼 정보를 유추할 수 있다.

RPM 단점

  1. 반드시 .rpm 파일이 있어야 한다.
  2. 의존성을 해결하지 못한다.

여기서 말하는 의존성이란? 어떤 프로그램을 설치하기 위해 또 다른 프로그램이 있어야 설치를 할 수 있다는 말이다.

CDRom

CDrom 에 CentOS-7-x86_64-DVD-1804.iso 파일을 넣은 후에 /media/cdrom 에 마운트를 한다.

이제 이 CDrom 에서 rpm 파일들을 검색해서 다운로드 받는 것이다. 인터넷에서 다운을 받는 것이 아니다.

$ mkdir /media/cdrom

$ mount /dev/cdrom /media/cdrom

$ ls /media/cdrom/Packages

xxx.rpm 이라는 파일들이 존재한다. 패키지 이름을 보고 정보를 유추할 수 있다.

rpm 관련 패키지 정보 확인 명령어

rpm -q 에 아래 옵션들을 붙여서 사용할 수 있다.

  • -a : 시스템에 설치되어 있는 모든 패키지
    • rpm -qa | grep [패키지명] ⇒ 패키지 설치 여부 확인
  • -i : 패키지에 대한 정보
    • rpm -qi [패키지명]
  • -c : 패키지의 설정 파일들을 보여준다.
    • rpm -qc [패키지명]
  • -d : 패키지의 문서(document)를 보여준다.
    • rpm -qd [패키지명]
  • -l : 패키지의 모든 파일 보여준다.
    • rpm -ql [패키지명]
  • -f : 파일이나 디렉토리가 어떠한 패키지로 인해서 파생되었는지 알려준다.
    • rpm -qf [파일 또는 디렉토리 경로]

RPM 관련 패키지 설치 및 업데이트 명령어

  • rpm -Uvh [패키지파일 경로]

RPM 관련 패키지 삭제 명령어

  • rpm -e [패키지명]

YUM(Yellowdog Updater Modified)

인터넷을 통하여 필요한 파일을 저장소에서 자동으로 모두 다운로드 해서 설치하는 방식이다.

YUM 의 패키지 종속성 완화

rpm 은 의존성 문제가 해결되지 않아 모든 패키지를 하나하나 찾아서 설치해야 했다.

yum 은 패키지가 의존성을 필요로 하면 패키지를 설치하면서 자동으로 의존성을 같이 설치한다.

YUM 파일 구성

  • /etc/yum.conf 에 기본 구성 파일 저장
  • /etc/yum.repo.d/ 에 추가 리포지토리 구성 파일
  • /var/log/yum.log 에 모든 설치 및 제거 트랜잭션 기록이 수집된다.
    • less /var/log/yum.log

YUM 동작 순서

  • yum install [패키지명] 명령어 입력
  • 레포지토리 파일 확인
  • 해당 url 주소에서 해당 패키지 다운로드
  • 추가적인 의존성 패키지 설치 확인
  • y 키 입력 시 추가 다운로드 및 설치

YUM 명령어

  • yum [sub-command] [패키지명]
    • yum install [패키지명] : 패키지 설치
      • -y 옵션을 사용하면 yes no 물어보지 않고 모두 yes 처리로 다운받아 준다.
    • yum remove [패키지명] : 패키지 삭제
      • -y 옵션을 사용하면 yes no 물어보지 않고 모두 yes 처리로 삭제한다.
    • yum update [패키지명] : 패키지 업데이트
    • yum info [패키지명] : 패키지 정보확인
    • yum list : repository 의 패키지 리스트 출력
    • yum provides [파일 또는 디렉토리 경로] : 해당 파일이나 디렉토리가 어떠한 패키지로 인해서 파생되었는지 알려줌( = rpm -qf 와 동일한 작용), 다른 점은 저장소에 물어본다는 점이다.
      • yum provides /etc/rsyslog.conf → rsyslog.conf 에 대한 파일 정보를 알려준다.
    • yum repolist all : repository 에 등록된 모든 패키지에 대한 활성화 정보를 확인할 수 있다.
  • yum groups [sub-command] “그룹 패키지명”
    • yum groups list : 그룹 패키지 리스트 출력
    • yum groups install “그룹 패키지명” : 그룹 패키지 설치
      • yum groups install “보안 툴”
    • yum groups remove “그룹 패키지명” : 그룹 패키지 삭제
      • yum groups remove “보안 툴”
    • yum groups update “그룹 패키지명” : 그룹 패키지 업데이트
      • yum groups update “보안 툴”
    • yum groups info “그룹 패키지명” : 그룹 패키지 정보
      • yum groups info “보안 툴” → 해당 그룹 패키지 안에 어떤 패키지들이 있는지 확인한다.
    • yum localinstall [패키지 파일명] : rpm 패키지 파일을 yum으로 설치
      • yum localinstall /media/cdrom/Packages/mysql-connector-odbc-5.2.5-7.el7.x86_64.rpm
      • 내 Packages 디렉토리에 있는 mysql-connector-odbc-5.2.5-7.el7.x86_64.rpm 이 패키지 파일을 레포지토리에서 찾아서 설치하겠다는 뜻이다.
    • yum repository [파일 설정]
    • yum repolist
      • 아래와 같은 작업은 먼저 선행한다.
        $ cd /etc/yum.repos.d
        $ mkdir backup
        $ mv C* b*
      • vi /etc/yum.repos.d/xxx.repo 로 아래와 같이 내용을 구성해야 하고, 확장자가 반드시 .repo 여야 한다.
      • # [id]
        # name=repo name
        # baseurl = http://web address
        #           file://절대경로   (file:///a/b/c)
        # enabled = 0 또는 1 (0이면 비활성화 1이면 활성화)
        # gpgcheck = 0 또는 1 (0이면 무료 레포지토리 1이면 유료 저장소에서 인증키를 받았을 경우)
        # gpgkey = file://절대경로 (gpgcheck=1 일 경우에만 설정)
        [dvd]
        name=dvd repo
        baseurl=file:///media/cdrom
        enabled=1
        gpgcheck=0
        [net]
        name=network
        baseurl=http://mirror.centos.ort/centos/7/os/x86_64
        enabled=1
        gpgcheck=0
      • yum repolist 명령어를 입력하면 .repo 파일의 설정값들로 레포지토리에서 패키지를 다운받을 때 해당 패키지가 /media/cdrom 에 존재할 경우엔 dvd 에서 설치하고 그 외의 경우 http://mirror.centos.ort/centos/7/os/x86_64 에서 다운을 받는다.
      • yum repolist all 을 사용해서 해당 설정 파일의 활성화 상태를 확인할 수 있다.
    • yum-config-manager 를 이용해서 .repo 파일 만들기
      1. yum -y install yum-utils
      2. yum-config-manager —add-repo=http://web address
      3. 해당 파일에 gpgcheck=0 cnrk

실습

# 처음 설정으로 스냅샷

# DVD 가 장착되어 있다는 가정 하에 
# DVD를 /media/cdrom으로 마운트

$ umount /dev/cdrom
$ mkdir /media/cdrom
$ mount /dev/cdrom /media/cdrom

# Repository 설정 - DVD 와 인터넷 
# ([http://mirror.centos.org/centos/7/os/x86_64]
# (http://mirror.centos.org/centos/7/os/x86_64))

$ cd /etc/yum.repos.d
$ mkdir backup
$ mv C* b*

$ vi /etc/yum.repos.d/test.repo
[dvd]
name=dvd
baseurl=file:///media/cdrom
enabled=1
gpgcheck=0

[net]
name=network
baseurl=http://mirror.centos.org/centos/7/os/x86_64
enabled=1
gpgcheck=0

# repo 활성화 상태 확인

$ yum repolist all

# repo 중에서 dvd repo를 비활성화 시키시오.

$ vi /etc/yum.repos.d/test.repo
[dvd]
name=dvd
baseurl=file:///media/cdrom
enabled=0
gpgcheck=0

# repo 활성화 상태 확인

$ yum repolist all
dvd repo 가 disabled 로 변경돼 있다.

# 저장소에 telnet에 대한 패키지가 어떠한 것이 있는지 확인해보시오.

$ yum list | grep telnet

# telnet 관련 패키지 설치 및 telnet.socket (service 아님) 시작 및 활성화

$ yum install telnet*

$ systemctl start telnet.socket
$ systemctl enable telnet.socket

또는 

$ systemctl enable telnet.socket --now

# telnet 패키지의 설정 파일 및 문서(document) 확인

$ rpm -qc telnet
$ rpm -qd telnet

# rsyslog.conf 파일이 어떠한 패키지로 인해서 생성된 것인지 확인(2가지 방법)

$ yum provide /etc/rsyslog.conf
$ rpm -qf /etc/rsyslog.conf 

# 위에 패키지의 정보를 확인 (2가지 방법)

$ yum info rsyslog
$ rpm -qi rsyslog

# 그룹 패키지 중에서 패키지명으로 security(보안) 가 들어간 패키지는?

$ yum groups list | egrep '(security|보안)'

# 해당 그룹 패키지는 어떤 패키지들로 구성이 되어 있는가?

$ yum groups info "보안 도구" 
또는
$ yum groups info "Security"

# zsh-xxxxxxxxxxxxxx.rpm 파일을 yum 명령어를 사용해서 설치하시오.

$ yum localinstall /media/cdrom/Packages/zsh-5.0.2-28.el7.x86_64.rpm
728x90