
결론부터 말하면, RPM과 dpkg는 개별 패키지와 로컬 데이터베이스를 다루는 낮은 층의 도구이고, DNF와 APT는 저장소 메타데이터를 이용해 검색·의존성 해결·설치·업데이트를 묶어 처리하는 높은 층의 도구입니다. 시험에서는 RPM과 DNF, dpkg와 APT의 역할을 서로 바꾼 선택지가 자주 헷갈립니다.
KAIT 현행 출제기준은 리눅스마스터 2급 소프트웨어 설치 영역에서 개념 및 사용법, 소프트웨어 설치 및 삭제를 평가합니다. 시험 안내 환경은 RHEL/Rocky Linux 8과 Ubuntu 18.04 이상이므로 두 계열의 공통 흐름을 나란히 공부해야 합니다. 연재 전체 목차는 2026 리눅스마스터 2급 전체 학습지도에 있습니다.
RPM·DNF·APT·dpkg 핵심 비교표
| 계열 | 도구 | 주요 역할 | 대표 패키지 |
|---|---|---|---|
| Red Hat 계열 | rpm | RPM 파일 설치·조회·검증·삭제와 RPM 데이터베이스 조작 | .rpm |
| Red Hat 계열 | DNF | 저장소 검색, 의존성 계산, 설치·업그레이드·삭제 트랜잭션 | 저장소의 RPM |
| Debian 계열 | dpkg | 로컬 Debian 패키지의 설치·조회·제거와 상태 데이터베이스 관리 | .deb |
| Debian 계열 | APT | 패키지 목록과 저장소를 이용한 검색·의존성 해결·설치·업데이트 | 저장소의 DEB |
외우는 문장: RPM 계열은 rpm 위에 DNF, Debian 계열은 dpkg 위에 APT가 놓인다고 이해하면 역할이 선명해집니다.
패키지·저장소·의존성
- 패키지: 프로그램 파일뿐 아니라 버전, 아키텍처, 의존성, 설치 스크립트, 파일 속성 같은 메타데이터를 함께 묶은 배포 단위
- 저장소: 패키지와 패키지 목록·서명 정보를 제공하는 배포 위치
- 의존성: 한 패키지가 실행되거나 설치되기 위해 필요한 다른 패키지·기능
- 트랜잭션: 설치·업그레이드·삭제 작업을 의존성과 함께 하나의 일관된 변경으로 계산하고 수행하는 단위
RPM의 패키지 식별에는 이름, Epoch, 버전, 릴리스, 아키텍처를 묶은 NEVRA 개념이 사용됩니다. 같은 이름이라도 버전이나 아키텍처가 다를 수 있으므로 이름=파일 하나라고 단순화하면 안 됩니다.
RPM: 설치보다 먼저 조회를 익히기
| 명령 | 동작 |
|---|---|
rpm -q bash |
설치된 bash 패키지의 이름·버전 조회 |
rpm -qi bash |
설치된 패키지의 상세 정보 조회 |
rpm -ql bash |
해당 패키지가 설치한 파일 목록 조회 |
rpm -qf /usr/bin/bash |
특정 파일을 소유한 설치 패키지 조회 |
rpm -V bash |
설치 파일의 크기·다이제스트·권한 등과 RPM 메타데이터 비교 |
# 모두 시스템을 바꾸지 않는 조회 예시
rpm -q bash
rpm -qi bash
rpm -ql bash | head
rpm -qf /usr/bin/bash
rpm -V bash
rpm -i 파일.rpm은 로컬 RPM을 직접 설치하지만 저장소 전체를 이용한 의존성 해결 도구로 보기는 어렵습니다. 일반 운영에서는 저장소와 의존성을 처리하는 DNF를 우선하고, --nodeps나 --force로 문제를 억지로 넘기는 방식은 피하세요.
DNF: 저장소와 의존성을 함께 관리
# 읽기 전용 확인
dnf repolist
dnf search tree
dnf info tree
dnf list --installed bash
# 실제 변경 직전에 '아니오'로 끝내는 모의 확인
sudo dnf --assumeno install tree
sudo dnf --assumeno remove tree
DNF의 install은 요청한 패키지와 필요한 의존성이 설치되도록 계산합니다. remove는 대상과 더 이상 필요한 이유가 없는 의존 패키지에 영향을 줄 수 있으므로, 실제 실행 전 제거 목록을 반드시 읽어야 합니다. --assumeno는 모든 질문에 아니오로 답해 트랜잭션 계획을 안전하게 확인할 때 유용합니다.
RHEL/Rocky Linux 8의 YUM과 DNF
Red Hat 공식 RHEL 8 문서는 소프트웨어 관리에 YUM 명령을 사용한다고 설명하면서, 그 YUM이 DNF 기술을 기반으로 하고 대부분의 기존 YUM 사용법과 호환된다고 밝힙니다. 따라서 RHEL 8에서 출력과 구성에 DNF라는 이름이 보일 수 있습니다. 시험에서는 “YUM과 DNF가 완전히 무관한 별도 체계”라고 단정하지 마세요.
dpkg: 로컬 DEB와 설치 상태 확인
| 명령 | 동작 |
|---|---|
dpkg-query -s bash |
설치 상태와 패키지 정보 확인 |
dpkg-query -L bash |
설치된 파일 목록 확인 |
dpkg-query -S /bin/bash |
경로를 제공한 설치 패키지 검색 |
dpkg -i 파일.deb |
로컬 DEB 파일 설치 |
dpkg -r 패키지 |
패키지 제거 |
Debian 공식 문서는 dpkg를 이미 확보한 패키지를 설치하는 도구로 설명합니다. dpkg 자체는 저장소에서 부족한 의존성을 내려받는 상위 관리자가 아니므로, 일반 사용에서는 APT가 dpkg를 바탕으로 의존성과 저장소 작업을 조정합니다.
APT: update·upgrade·remove·purge 구별
| 명령 | 핵심 의미 |
|---|---|
apt update |
설정된 저장소에서 패키지 목록을 새로 받음 |
apt upgrade |
설치된 패키지에 가능한 업그레이드를 적용 |
apt install 패키지 |
패키지와 필요한 의존성 설치 |
apt remove 패키지 |
패키지를 제거하되 일부 설정 파일은 남길 수 있음 |
apt purge 패키지 |
패키지와 패키지가 관리하는 설정 파일까지 제거 |
# 조회
apt-cache search '^tree$'
apt show tree
dpkg-query -s bash
dpkg-query -L bash | head
# -s는 실제로 바꾸지 않는 시뮬레이션
sudo apt-get -s install tree
sudo apt-get -s remove tree
apt update는 프로그램 자체를 최신 버전으로 올리는 명령이 아니라 설치 후보를 판단할 패키지 목록을 갱신합니다. remove와 purge의 차이는 패키지가 관리하는 설정 파일 처리에 있으며, 사용자의 홈 디렉터리 데이터까지 자동으로 모두 지운다는 뜻은 아닙니다.
로컬 패키지는 상위 도구로 설치할 수 있다
# 로컬 패키지의 트랜잭션 계획만 확인하는 형식 예시
sudo dnf --assumeno install ./example.rpm
sudo apt-get -s install ./example.deb
앞의 ./는 저장소의 패키지 이름이 아니라 현재 디렉터리의 파일임을 분명히 합니다. 위 예시는 DNF의 --assumeno와 apt-get의 -s를 사용해 설치를 확정하지 않고 계획만 확인합니다. 실제 적용은 파일의 출처와 서명을 검증한 뒤 해당 옵션을 제거해야 합니다. 인터넷에서 받은 임의 패키지를 설치하지 말고 배포판 공식 저장소와 서명 검증을 우선하세요.
패키지 설치와 소스 설치의 차이
- 패키지 설치: 배포판 규칙에 맞춘 파일·메타데이터를 패키지 데이터베이스가 추적하며 업데이트·삭제가 상대적으로 일관됨
- 소스 설치: 소스 코드를 구성·컴파일·설치하며 빌드 도구와 의존성, 설치 경로를 사용자가 직접 책임짐
전형적인 configure → make → make install 흐름은 모든 프로젝트에 공통인 법칙이 아닙니다. Meson, CMake 등 다른 빌드 체계도 있으므로 반드시 해당 프로젝트의 공식 INSTALL 문서를 따라야 하며, 시험에서는 패키지 관리 방식과의 차이를 이해하는 수준으로 정리하면 좋습니다.
자주 틀리는 지점
- RPM은 패키지 형식·낮은 층 도구이고 DNF는 저장소와 의존성을 다루는 상위 관리자입니다.
- dpkg가 부족한 의존성을 저장소에서 자동으로 모두 해결한다고 보면 안 됩니다.
apt update는 패키지 목록 갱신,apt upgrade는 설치 패키지 업그레이드입니다.remove와purge는 설정 파일 처리 범위가 다릅니다.- 패키지 삭제는 의존 패키지에도 영향을 줄 수 있으므로 실행 전 트랜잭션 목록을 확인해야 합니다.
직접 만든 셀프체크 5문항
- RPM 계열에서 개별 패키지·데이터베이스를 다루는 도구와 저장소 의존성을 해결하는 도구는 각각 무엇인가?
rpm -qf /usr/bin/bash는 무엇을 찾는가?apt update와apt upgrade의 차이는 무엇인가?apt remove와apt purge의 핵심 차이는 무엇인가?- 설치 계획만 확인하고 실제 변경을 피하려면 DNF와 apt-get에서 각각 어떤 옵션을 사용할 수 있는가?
정답 확인
- 낮은 층 도구는
rpm, 저장소 관리자는DNF입니다. - 해당 경로의 파일을 설치한 RPM 패키지를 찾습니다.
update는 패키지 목록을 갱신하고,upgrade는 설치된 패키지의 가능한 새 버전을 적용합니다.remove는 일부 설정을 남길 수 있고,purge는 패키지가 관리하는 설정 파일까지 제거합니다.- DNF는
--assumeno, apt-get은-s시뮬레이션을 사용할 수 있습니다.
공식 자료
- KAIT 리눅스마스터 현행 출제기준
- RPM 4.20 공식 rpm(8) 매뉴얼
- DNF 공식 명령 참조
- Red Hat Enterprise Linux 8 소프트웨어 관리
- Debian Reference: 패키지 관리
- Debian Administrator's Handbook: dpkg
- Debian Administrator's Handbook: APT 명령
이 글은 2026년 7월 11일 갱신했습니다. 최신 RPM·DNF·APT 문서와 KAIT 시험 대상 배포판의 실제 탑재 버전은 다를 수 있습니다. 본문은 Rocky Linux 8과 Ubuntu 18.04 이상에서 공통으로 학습할 역할과 기본 명령에 집중했으며, 실제 설치·삭제 전에는 해당 시스템의 man 페이지와 트랜잭션 목록을 다시 확인하세요.
'학위공부 > IT 자격증' 카테고리의 다른 글
| 2026 리눅스마스터 2급 ⑩ X 윈도|구조·데스크톱 환경·DISPLAY 정리 (0) | 2026.07.12 |
|---|---|
| 2026 리눅스마스터 2급 ⑨ 장치 설정|/dev·저장장치·주변장치 정리 (0) | 2026.07.11 |
| 2026 리눅스마스터 2급 ⑦ 에디터|vi·Vim 모드와 검색·치환·저장 명령 (0) | 2026.07.11 |
| 2026 리눅스마스터 2급 ⑥ 프로세스 관리|ps·top·kill·jobs·nice 핵심정리 (0) | 2026.07.11 |
| 2026 리눅스마스터 2급 ⑤ Shell 핵심정리|셸 변수·환경변수·설정 파일·인용부호 (0) | 2026.07.11 |