본문 바로가기
리눅스 이야기

리눅스 패키지 관리 구조는 어떻게 되나요 ?

by reallinux1 2024. 7. 16.

리눅스 패키지 관리 구조는 어떻게 되나요 ?

 

* 패키지 관리자 구조와 동작원리

리눅스 패키지 관리는 배포판(우분투, 데비안, 레드햇 등)들 마다 차이가 있지만
큰 구조와 처리단계는 동일합니다. 위 구조와 같이 패키지 저장소 서버로 부터 패키지 정보를 가져오는 단계와 가져온 패키지 정보를 토대로 패키지를 조회하고 패키지 파일(.deb, .rpm)을 다운로드하는 단계
마지막으로 다운로드한 패키지 파일(.deb, .rpm)을 통해서 리눅스 내부에 설치(install)하는 단계가 있습니다. 

 1. 패키지 정보 단계
 2. 패키지 파일 다운로드 단계
 3. 패키지 파일 설치 단계 
각각의 단계별로 어떤 설정파일, 폴더가 존재하고 저장파일, 폴더가 존재하는지 알아 봅니다.

 

* 레드햇 패키지 관리: 패키지 정보 업데이트 과정

 

먼저 레드햇 계열 (CentOS, Rocky, RHEL 등)에서 패키지를 관리할때는 yum 또는 dnf 를 사용합니다.
참고로 yum 에서 업그레이드 된 dnf 는 yum 명령어와 사용법이 거의 유사합니다.
최신 패키지들에 대한 정보(명칭, 버전 등)을 얻어오기 위해서는 리눅스 패키지 저장소 서버 주소를 알아야합니다.
해당 주소는  에 저장되고 해당 폴더 내부의 .repo 파일을 열어보면

$ ls /etc/yum.repos.d/*.repo

 

패키지 저장소 서버 주소가 적혀져 있습니다. IP 주소가 적히기 보다는 도메인 URL 주소가 적혀져 있어서 리눅스 서버내에 DNS 설정이 올바르게 되어있지 않다면 패키지 저장소 서버와의 네트워크 통신이 불가능합니다.
해당 패키지 저장소 서버 주소 통해서 패키지 정보(명칭, 버전 등)를 받아 온다면

위의 그림과 같이 패키지 정보(명칭, 버전 등)가 아래 두가지 경로에 저장 됩니다.

 

# yum 패키지 관리자 사용하는 경우
$ ls /var/cache/yum/

# dnf 패키지 관리자 사용하는 경우
$ ls /var/cache/dnf/*/repodata/

패키지 관리자를 yum 을 사용하고 있는지 dnf 를 사용하고 있는지에 따라서 둘중 하나의 경로에 저장됩니다.

* 레드햇 패키지 관리: 패키지 설치와 버전 업그레이드 과정

저장된 패키지 정보(명칭, 버전 등)를 토대로 패키지 저장소 서버에게 패키지 파일(.rpm) 다운로드 받기위해 요청 할 수 있으며 해당 파일은 아래와 같은 경로에 저장 됩니다.

# yum 패키지 관리자 사용하는 경우
/var/cache/yum/*/packages/

# dnf 패키지 관리자 사용하는 경우
/var/cache/dnf/*/packages/

패키지 파일(.rpm)을 다운로드 받았다고 해서 설치(install)이 완료된것은 아닙니다.
해당 파일을 통해서 실제 설치(install)은 Low Level 패키지 관리자를 통해서 할 수 있고
레드햇 계열에서는 rpm 명령어를 주로 사용합니다.
해당 패키지 파일(.rpm)은 기본적으로 임시저장되고 설치(install)가 끝난후에 삭제되지만
배포판 이나 설정에 따라서는 그대로 저장되어있을 수 있습니다.

* 우분투 패키지 관리: 패키지 정보 업데이트 과정

우분투 및 데비안 계열 리눅스 배포판에서는 apt 을 통해서 패키지들을 관리하고

$ cat /etc/apt/sources.list

위의 설정파일 안에 패키지 저장소 서버 주소가 적혀져 있습니다.
해당 파일 뿐만아니라 docker 와같이 외부 패키지 저장소로 부터 패키지 정보를 받아 올 수 있는데
외부 패키지 저장소에 대한 서버 URL 주소는

$ ls /etc/apt/sources.list.d/

위 폴더 경로안에 저장이 됩니다. 해당 경로가 잘못되거나 외부 패키지 저장소가
서비스 중단이 되면 apt update 명령어 도중에 오류가 발생 할 수 있습니다.

해당 패키지 저장소 서버 주소를 통해서 최신 패키지 정보(명칭, 버전 등)를 받아오면

$ ls /var/lib/apt/lists/

위의 폴더경로에 저장이 됩니다. 해당 폴더 내부의 파일들은 삭제가 가능하고
삭제해서 lists 폴더를 비웠다면 apt update 명령어를 통해서 다시 채워 넣을 수 있습니다.

* 우분투 패키지 관리: 패키지 설치와 버전 업그레이드 과정

저장된 패키지 정보(명칭, 버전 등)를 통해서 패키지를 조회(apt-cache search 등)할 수 있고
특정 패키지 파일(.deb)들을 패키지 저장소 서버로 부터 다운로드 받았다면

$ ls /var/cache/apt/archives/

위의 폴더에 기본적으로 임시 저장됩니다. 그리고 Low Level 패키지 관리자 dpkg 를 통해서
패키지 파일(.deb)을 설치하고 설치가 끝나면 임시저장된 패키지 파일(.deb)들을 삭제하게 됩니다.

각각의 단계에서 어떤 처리가 이루어지는지 명령어를 통해서 간단하게 추적하는 실습은 다음글에서 설명하겠습니다.
자세한 패키지 관련 명령어 실습과 다양한 리눅스 실무사례 패키지 문제해결 실습을 재연하고 해결해보고 싶다면
https://reallinux.co.kr/course/linux_zerobase
리얼리눅스 강의중 "리눅스 Zero 베이스 초보자 트러블 슈팅까지" 를 참고해주세요!

 

Reallinux | 리눅스 Zero 베이스 | 바닥부터 제대로 실력쌓기

기초명령어부터 패키지 관리까지 비전공자,취준생을 위한 리눅스 기초 교육

reallinux.co.kr