Linux - (11) : RPM & YUM

­이승환·2021년 8월 4일
0

리눅스 정리

목록 보기
11/21

패키지 매니저


우분투, 라즈비안 등으로 입문한 리눅스 또는 pip 같은 파이썬 모듈 설치 과정에서 나같은 초보 개발자들은 다양한 패키지 매니저를 사용해왔다. 하지만 막상 패키지 매니저가 무엇이고 어떻게 동작하게 되었는지는 알지 못했다. 따라서 해당 내용을 정리하고자 하며 이번엔 RPM, YUM 을 토대로 공부해보고자 한다.

패키지 매니저란?

패키지 매니저(Package manager)는 패키지를 다루는 작업을 편리하고 안전하게 수행하기 위해 사용되는 툴이다. 여기서 패키지를 다루는 작업이란 패키지를 설치, 업데이트, 수정, 삭제하는 작업을 의미한다.

패키지는 라이브러리(library)와 유사한 개념이다.
라이브러리가 코드의 작성을 위해 사용되는 코드의 묶음이라면, 패키지는 코드의 배포를 위해 사용되는 코드의 묶음이다.
따라서 패키지는 경우에 따라 라이브러리를 포함할 수도 있으며, 일반적으로 라이브러리나 실행 파일(executable)을 포함한다.
패키지는 다음 3가지 정보를 가지고 있는 코드의 배포 단위이다.

1. 컴파일한 소프트웨어의 바이너리(binary)
2. 환경 설정(configuration)에 관련된 정보
3. 의존(dependency)에 관련된 정보

RPM

초창기 리눅스는 프로그램 패키지 설치가 굉장이 어려웠고, 리눅스는 프로그램을 설치하려면 소스코드를 가져와서 직접 컴파일 한 후 필요한 곳에 배치했다고 한다. 여기서 RedHat 사는 Redhat Package Manager 라는 개념을 도입했다.

1. rpm 파일 네이밍

gedit-3.8.3-6.e17.x86_64.rpm

패키지 이름 : gedit --> 이름
버전 : 3.8.3 --> 주, 부, 패치버전 순서
릴리즈번호 : 6 --> 문제점을 개선할대 붙임
CentOS 버전 : el17
아키텍처 : ㅌ86_64 --> 64비트

2. rpm 옵션 모음

# rpm-Uvh filename.rpm

U : upgrade
v : 설치과정을 확인
h : # 를 이용한 다운정도

# rpm -e package_name

e : 패키지 삭제, 파일 이름이 아닌 패키지명으로 삭제함을 주의

# rpm -qlp package_name.rpm : 패키지에 어떤 파일이 포함되어 있는지 확인
rpm -qip filenmae.rpm : 패키지 파일 상세정보 확인
rpm -qi package_name.rpm : 패키지 팡리 상세정보 확인

YUM

rpm 의 경우 의존성 문제가 발생한다. 예를들어 B 라는 패키지는 A 라는 패키지가 설치되어 있어야 사용이 가능하다면 A 에 의존성을 가지고 있다라고 한다. 즉 미리 설치되어있는 녀석을 각자 설치해줘야하는 불편함이 있다. YUM 의 경우 이러한 의존성 문제를 해결해서 설치가 안 되어 있다면 전부 설치해주는 아주 편하고 고마운 녀석이다.

저장 장소는 /etc/yum.repos.d/ 에 존재한다.

1. yum 옵션 모음

# yum install package_name
# yum -y install package_name

# yum update package_name

# yum remove package_name

# yum info package_name

# yum groupinstall package_name

# yum lint package_name

# yum provieds filename : 특정 파일이 속한 패키지 확인

# yum install --nogpgcheck filename.rpm : CentOS 19 에서 검증되지 않은 패키지를 강제러 설치할 떄 사용

# yum clean all : 기존 저장소 목록 지우기

위에서 확인한바와 같이 옵션 명이 굉장히 깔끔해서 이용하기 편하다.

2. yum 동작방식

CentOS 패키지 저장소는 웹 서버 상에 패키지를 저장하는 공간이다. CentOS에 소속되서 CentOS 의 모든 패키지가 저장되어있는 공간이다. 작동 순서는 아래와 같다.

  1. 처음 yum install 을 실행하면 위 웹 ftp 주소를 알고 있어야 한다. 이 것은 /etc/yum.repos.d 폴더에 저장되어있다.
  2. 웹 서버상에 전체 패키지 목록을 요청한다.
  3. 전체 패키지 목폭 파일만 다운로드한다. 여기서 업데이트 패키지가 존재하면 최신 버전으로 가져오고, 의존성이 엮여있는 경우 추가 패키지에서 가져온다.
  4. 전체 패키지 목록을 다운받는다.
  5. 사용자에게 y 입력을 받는경우 패키지 파일을 ftp 서버에서 요청한다
  6. 설치할 패키지 파일을 다운로드한 후 자동 설치(실행) 한다.

위에서 언급한 /etc 디렉토리를 살펴보자

  1. /etc/yum.conf : 변경할 필요 없음
  2. /etc/yum.repos.d : yum 을 입력했을 때 검색하게 되는 네트워크의 주소가 여러개 입력이 가능하다. 직접 수정해서 사용할 수도 있다.

마무리


이상 yum, rpm 에 대해서 간단하게 알아봤다. 깨달은 점은 크게 3가지이다.

  1. 패키지 매니저의 종류와 역사를 이해하는게 사실 제일 간편할 듯
  2. yum 은 rpm 의 진화버전이다.
  3. 패키지매니저가 네트워크에서 직접 설치해오는 방식에 대해서 이해함. 직접 설치하는 경우 의존성 문제가 굉장히 걸림돌이 될 수도 있다. 이는 파이썬 패키지(모듈) 을 설치할 때 뼈저리게 경험한 적이 있다.
profile
Mechanical & Computer Science

0개의 댓글