우분투, 라즈비안 등으로 입문한 리눅스 또는 pip 같은 파이썬 모듈 설치 과정에서 나같은 초보 개발자들은 다양한 패키지 매니저를 사용해왔다. 하지만 막상 패키지 매니저가 무엇이고 어떻게 동작하게 되었는지는 알지 못했다. 따라서 해당 내용을 정리하고자 하며 이번엔 RPM, YUM 을 토대로 공부해보고자 한다.
패키지 매니저(Package manager)는 패키지를 다루는 작업을 편리하고 안전하게 수행하기 위해 사용되는 툴이다. 여기서 패키지를 다루는 작업이란 패키지를 설치, 업데이트, 수정, 삭제하는 작업을 의미한다.
패키지는 라이브러리(library)와 유사한 개념이다.
라이브러리가 코드의 작성을 위해 사용되는 코드의 묶음이라면, 패키지는 코드의 배포를 위해 사용되는 코드의 묶음이다.
따라서 패키지는 경우에 따라 라이브러리를 포함할 수도 있으며, 일반적으로 라이브러리나 실행 파일(executable)을 포함한다.
패키지는 다음 3가지 정보를 가지고 있는 코드의 배포 단위이다.
1. 컴파일한 소프트웨어의 바이너리(binary)
2. 환경 설정(configuration)에 관련된 정보
3. 의존(dependency)에 관련된 정보
초창기 리눅스는 프로그램 패키지 설치가 굉장이 어려웠고, 리눅스는 프로그램을 설치하려면 소스코드를 가져와서 직접 컴파일 한 후 필요한 곳에 배치했다고 한다. 여기서 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 : 패키지 팡리 상세정보 확인
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 의 모든 패키지가 저장되어있는 공간이다. 작동 순서는 아래와 같다.
위에서 언급한 /etc 디렉토리를 살펴보자
- /etc/yum.conf : 변경할 필요 없음
- /etc/yum.repos.d : yum 을 입력했을 때 검색하게 되는 네트워크의 주소가 여러개 입력이 가능하다. 직접 수정해서 사용할 수도 있다.
이상 yum, rpm 에 대해서 간단하게 알아봤다. 깨달은 점은 크게 3가지이다.