CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
리눅스마스터 1급 · 1급리눅스마스터 1급
  • Week 1
    • 1.운영체제와 리눅스: 커널이 하는 일
    • 2.자유 소프트웨어와 배포판: 라이선스가 만든 생태계
    • 3.설치와 부팅: 전원을 켜는 순간부터
    • 4.파일시스템 구조와 파일의 종류: 모든 것은 파일이다
    • 5.Week 1 종합 복습: 개념을 꿰뚫는 시간
  • Week 2
  • Week 3
  • Week 4
  • Week 5
  • Week 6
  • Week 7
    • 1.패키지 관리: RPM·YUM/DNF와 DEB·APT 두 계열을 한 손에
    • 2.소스 컴파일과 라이브러리: tar→configure→make→make install의 의미
    • 3.커널과 모듈: 시스템의 심장과 그 확장 부품 다루기
    • 4.장치 관리와 프린터: /dev·udev로 하드웨어 다루고 CUPS로 인쇄하기
    • 5.Week 7 종합 복습: 백업과 시스템 관리의 큰 그림
    • 6.가상화 관리: 하이퍼바이저·KVM·컨테이너로 한 서버를 여럿처럼 쓰기
  • Week 8
  • Week 9
  • Week 10
  • Week 11
  • Week 12
  • Week 13
  • Week 14
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← 리눅스마스터 1급/Week 7/Day 1

기준: 리눅스마스터 1급 출제 기준·오류 제보

리눅스마스터 1급· AssociateWeek 7 · Day 1읽기 약 10분
핵심 정리
  • 패키지 설치는 단순 압축 해제가 아니라 무엇이 어디에 어떤 버전으로 깔렸는지 DB에 기록하는 일이다 — 같은 파일도 tar로 풀면 설치가 아니고 rpm -i로 풀면 설치다.
  • 뼈대는 2계층 × 2계열. 저수준(rpm, dpkg)은 단일 패키지 파일만 다루고 의존성을 자동 해결하지 못하며, 고수준(yum/dnf, apt)은 저장소에서 의존성까지 자동 처리한다.
  • Red Hat 계열 = .rpm + rpm/yum/dnf, Debian 계열 = .deb + dpkg/apt. 명령이 1:1로 대응한다 — rpm -ivh ↔ dpkg -i, yum install ↔ apt install, rpm -qa ↔ dpkg -l.
  • 시험 3대 함정: apt update는 설치가 아니라 목록(인덱스) 갱신, rpm -qf(파일→패키지)와 rpm -ql(패키지→파일)의 방향, dpkg -l(설치 목록)/-L(파일 목록) 대소문자.
  • 삭제도 갈린다 — dpkg -r은 설정 파일을 남기고, dpkg -P(Purge)는 설정까지 지운다. rpm -e에는 이 구분이 없다.

Day 1 - 패키지 관리: RPM·YUM/DNF와 DEB·APT 두 계열을 한 손에

RPM — Red Hat 계열의 저수준 패키지 도구

  • Red Hat 계열(RHEL·CentOS·Rocky·Fedora)은 .rpm 패키지와 RPM/YUM/DNF 도구를 쓴다.
  • rpm(Red Hat Package Manager)은 단일 .rpm 파일을 설치·삭제·조회하는 가장 기본 도구다.
  • 패키지 파일 이름 자체가 정보를 담는다.
# httpd-2.4.6-97.el7.x86_64.rpm
#  └이름  └버전  └릴리스 └배포판 └아키텍처

설치·삭제·업그레이드는 단일 옵션(-i/-U/-F/-e) + 보조 옵션(-v, -h) 조합으로 한다.

rpm -ivh httpd-2.4.6-97.el7.x86_64.rpm   # 설치(install) + verbose + hash 진행막대
rpm -Uvh httpd-2.4.6-98.el7.x86_64.rpm   # 업그레이드(없으면 새로 설치)
rpm -Fvh httpd-2.4.6-98.el7.x86_64.rpm   # Freshen(이미 설치된 것만 갱신)
rpm -e httpd                              # 삭제(erase) — 파일명 아닌 패키지명

-i(install)와 -U(Upgrade)의 결정적 차이는 기존 버전 처리다. -i는 이미 설치돼 있으면 "already installed" 오류를 내며 멈추지만, -U는 기존 버전을 지우고 새 버전으로 교체한다. 게다가 -U는 설치된 적이 없어도 새로 설치한다. 그래서 실무에서는 -Uvh를 가장 많이 쓴다. -F(Freshen)는 한 발 더 나아가 이미 설치된 패키지만 갱신하고, 미설치 패키지는 건드리지 않는다.

조회(query)는 -q를 앞세운다. 여기서 헷갈리기 쉽다.

rpm -qa                # 설치된 모든 패키지 목록(all)
rpm -q httpd           # 특정 패키지 설치 여부 + 버전
rpm -qi httpd          # 상세 정보(information)
rpm -ql httpd          # 그 패키지가 설치한 파일 목록(list)
rpm -qf /usr/sbin/httpd  # 이 파일이 어느 패키지 소속인지(file)
rpm -qc httpd          # 설정 파일만(config)
rpm -V httpd           # 설치 후 변조 여부 검증(Verify)
옵션의미자주 쓰는 형태
-iinstallrpm -ivh pkg.rpm
-UUpgrade(없으면 설치)rpm -Uvh pkg.rpm
-FFreshen(설치된 것만)rpm -Fvh pkg.rpm
-eerase(삭제)rpm -e pkg
-v -hverbose + 진행막대(#)설치 시 함께
-qa전체 목록rpm -qa | grep ...
-ql패키지의 파일 목록어디에 깔렸나
-qf파일→패키지 역추적rpm -qf /경로

rpm -qf(file→package)와 rpm -ql(package→files)는 정반대 방향의 조회다. "이 파일은 누가 깔았지?"는 -qf, "이 패키지는 뭘 깔았지?"는 -ql. 시험에서 이 둘을 바꿔치기한 보기는 오답이다. q(query)가 빠지면 안 된다는 점도 함정이다 — rpm -f는 존재하지 않는 조합이다.

⚠️ 함정: rpm -ivh로는 의존성을 자동 해결하지 못한다. A 패키지가 B를 요구하면 "Failed dependencies: B is needed" 오류를 내고 멈춘다. 강제로 무시하려면 --nodeps를 쓸 수 있지만 시스템이 깨질 수 있어 권장되지 않는다. 의존성 자동 해결이 바로 다음에 나오는 YUM/DNF의 존재 이유다.

# 직접 쳐보기 — rpm 조회 연습 (RHEL/CentOS 계열에서)
rpm -qa | wc -l                # 설치된 패키지 개수
rpm -qa | grep kernel          # 커널 관련 패키지
rpm -qi bash                   # bash 패키지 상세
rpm -ql coreutils | head       # coreutils가 깐 파일들
rpm -qf /bin/ls                # ls는 어느 패키지 소속?

YUM / DNF — 의존성을 자동 해결하는 고수준 도구

  • YUM(Yellowdog Updater Modified): rpm의 의존성 지옥(dependency hell)을 풀기 위해 등장했다. 후속이 DNF(Dandified YUM).
  • 명령 체계가 거의 같아 yum을 dnf로 바꿔도 대부분 동작한다. RHEL 8부터 기본은 DNF이며 yum은 dnf의 심볼릭 링크다.
  • 핵심 차이는 저장소(repository)에서 의존성까지 자동으로 끌어온다는 점. /etc/yum.repos.d/*.repo에 정의된 저장소 URL에서 필요한 패키지를 모두 내려받아 한꺼번에 설치한다.
yum install httpd          # httpd + 필요한 모든 의존성 자동 설치
yum remove httpd           # 삭제(의존성 고려)
yum update                 # 모든 패키지 업데이트
yum update httpd           # 특정 패키지만 업데이트
yum search keyword         # 이름·설명에서 검색
yum info httpd             # 패키지 정보
yum list installed         # 설치된 패키지 목록
yum repolist               # 활성 저장소 목록
yum clean all              # 캐시 정리
yum groupinstall "Development Tools"   # 패키지 그룹 설치
작업RPM(저수준)YUM/DNF(고수준)
설치rpm -ivh pkg.rpmyum install pkg
삭제rpm -e pkgyum remove pkg
업그레이드rpm -Uvh pkg.rpmyum update pkg
의존성수동(오류만 표시)자동 해결
패키지 출처로컬 .rpm 파일저장소(인터넷)
검색불가(설치된 것만)yum search

rpm install과 yum install의 입력이 다르다. rpm은 로컬 .rpm 파일 경로를 주지만, yum은 패키지 이름만 준다(yum install httpd, 파일명·경로 없음). yum이 저장소에서 알아서 찾아 받기 때문이다. 시험에서 "인터넷 저장소에서 의존성까지 자동 설치하는 명령"의 답은 항상 yum/dnf 쪽이다.

yum repolist는 현재 활성화된 저장소를 보여준다. 저장소는 /etc/yum.repos.d/ 아래 .repo 파일로 정의되며, 각 파일에는 [저장소ID], baseurl=, enabled=1, gpgcheck=1 같은 항목이 들어간다. gpgcheck=1이면 패키지의 GPG 서명을 검증해 변조·위조를 막는다. 사내망에서는 로컬 미러 저장소를 만들어 baseurl=file:///경로로 가리키기도 한다.

⚠️ 함정: yum remove로 어떤 패키지를 지우면 그것에 의존하던 다른 패키지도 함께 제거될 수 있다. 무심코 핵심 라이브러리를 지우면 시스템이 마비된다. 삭제 전 yum이 보여주는 "Removing" 목록을 반드시 확인해야 한다. 또 yum update(전체)와 yum update 패키지(개별)를 혼동하면 안 된다.

# 직접 쳐보기 — yum/dnf
yum repolist                   # 어떤 저장소가 켜져 있나
yum list installed | head      # 설치 패키지 일부
yum info bash                  # bash 패키지 정보
yum search editor              # 'editor'가 들어간 패키지 검색
# dnf로도 동일하게 동작
dnf repolist

DEB · dpkg — Debian 계열의 저수준 패키지 도구

  • Debian 계열(Debian·Ubuntu·Mint)의 패키지는 .deb 확장자를 갖는다.
  • 이를 직접 다루는 저수준 도구가 dpkg — Red Hat 계열의 rpm에 대응한다.
  • .deb 파일명도 정보를 담는다.
# nginx_1.18.0-6_amd64.deb
#  └이름  └버전     └아키텍처
dpkg -i nginx_1.18.0-6_amd64.deb   # 설치(install)
dpkg -r nginx                       # 삭제(remove) — 설정 파일은 남김
dpkg -P nginx                       # 완전 삭제(Purge) — 설정까지 제거
dpkg -l                             # 설치된 패키지 목록(list)
dpkg -l nginx                       # 특정 패키지 상태
dpkg -L nginx                       # 그 패키지가 설치한 파일 목록(List files)
dpkg -S /usr/sbin/nginx             # 이 파일이 어느 패키지 소속인지(Search)
dpkg -s nginx                       # 패키지 상태·정보(status)
작업RPM 명령dpkg 명령
설치rpm -ivh pkg.rpmdpkg -i pkg.deb
삭제(설정 유지)rpm -e pkgdpkg -r pkg
완전 삭제(해당 없음)dpkg -P pkg
전체 목록rpm -qadpkg -l
패키지의 파일rpm -ql pkgdpkg -L pkg
파일→패키지rpm -qf 파일dpkg -S 파일

dpkg에서 -r(remove)과 -P(Purge)의 차이가 있다. -r은 프로그램 파일만 지우고 설정 파일(/etc 아래)은 남긴다 — 나중에 재설치할 때 설정을 보존하기 위함이다. -P(Purge)는 설정 파일까지 완전히 제거한다. RPM에는 이 구분이 없다(rpm -e는 설정도 함께 제거).

대소문자에 주의해야 한다. dpkg -l(소문자 L)은 설치 목록, dpkg -L(대문자 L)은 특정 패키지가 깐 파일 목록이다. rpm에서 -ql과 -qa가 갈리는 지점이 dpkg에서는 -L과 -l의 대소문자로 갈린다. 시험에서 이 대소문자를 바꾼 오답이 있다.

dpkg -i도 rpm -ivh처럼 의존성을 자동 해결하지 못한다. 의존성이 빠지면 패키지가 "설치됐지만 설정 안 됨" 상태로 남는다. 이때 apt-get install -f(fix-broken)로 의존성을 메우거나, 처음부터 apt를 쓰는 것이 정석이다.

APT — Debian 계열의 고수준 도구

  • APT(Advanced Package Tool)는 YUM/DNF에 대응하는 고수준 도구로, 저장소에서 의존성까지 자동으로 끌어온다.
  • 과거 apt-get/apt-cache로 나뉘어 있던 것을 통합한 apt 명령이 현재 표준이다.
apt update                  # 저장소 패키지 목록 갱신(설치 아님!)
apt upgrade                 # 설치된 패키지 업그레이드
apt install nginx           # 설치(의존성 자동)
apt remove nginx            # 삭제(설정 유지)
apt purge nginx             # 완전 삭제(설정까지)
apt search keyword          # 검색
apt show nginx              # 패키지 정보
apt list --installed        # 설치 목록
apt autoremove              # 더 이상 필요 없는 의존성 정리

apt update와 apt upgrade를 혼동하면 안 된다. apt update는 패키지를 설치·갱신하지 않는다. 저장소에서 "어떤 패키지의 어떤 버전이 있는지" 목록(인덱스)만 갱신한다. 실제 업그레이드는 apt upgrade가 한다. 그래서 항상 apt update && apt upgrade 순서로 쓴다. YUM의 yum update는 이 두 단계를 한 번에 하는 점이 다르다.

작업YUM/DNFAPT
저장소 목록 갱신(자동)apt update
업그레이드yum updateapt upgrade
설치yum install pkgapt install pkg
삭제yum remove pkgapt remove pkg
검색yum searchapt search
정보yum infoapt show

APT의 저장소 정의는 /etc/apt/sources.list와 /etc/apt/sources.list.d/*.list에 들어 있고, 각 줄은 deb URL 배포판 컴포넌트 형식이다. apt update는 이 목록의 URL에서 인덱스(Packages.gz)를 받아 로컬 캐시(/var/lib/apt/lists/)에 저장한다. 그래서 update를 안 하면 apt는 옛 인덱스만 보고 "최신 버전 없음"이라 잘못 판단한다.

RPM과 DEB는 1990년대 중반 거의 동시에 등장했다. 둘 다 초기엔 "의존성 지옥"으로 악명 높았다 — A를 깔려면 B가, B를 깔려면 C가 필요한데 사용자가 일일이 손으로 받아야 했다. Debian이 1998년 APT로 먼저 자동 의존성 해결을 선보였고, Red Hat 진영은 yum(2003년경 Fedora 채택)으로 따라잡았다. 오늘날 두 계열의 명령이 데칼코마니처럼 대응하는 것은 결국 같은 문제(의존성·저장소·검증)를 각자 풀어낸 결과다. 이 대응 구조를 표로 외워두면 시험의 절반은 자동으로 맞힌다.

📖 용어

  • 패키지(package) : 미리 컴파일된 프로그램 파일과 설치 정보를 하나로 묶어 놓은 꾸러미.
  • 의존성(dependency) : 어떤 패키지가 동작하려면 반드시 함께 설치돼야 하는 다른 패키지.
  • 의존성 지옥(dependency hell) : A를 깔려면 B가, B를 깔려면 C가 필요해 사용자가 손으로 줄줄이 받아야 하는 상황.
  • 저장소(repository) : 패키지가 모여 있는 인터넷(또는 사내) 서버. 고수준 도구가 여기서 받아 온다.
  • /etc/yum.repos.d : YUM/DNF가 쓸 저장소를 .repo 파일로 적어 두는 디렉터리.
  • /etc/apt/sources.list : APT가 쓸 저장소를 deb URL 배포판 컴포넌트 형식으로 적어 두는 파일.
  • gpgcheck : 저장소 설정 항목. 1이면 패키지의 GPG 서명을 검사해 변조·위조된 패키지를 막는다.
  • 인덱스(패키지 목록) : 저장소에 어떤 패키지의 어떤 버전이 있는지 적힌 목록. apt update가 이걸 받아 /var/lib/apt/lists/에 저장한다.
  • Purge(퍼지) : 프로그램뿐 아니라 /etc 아래 설정 파일까지 지우는 완전 삭제. dpkg -P, apt purge.
  • Freshen(-F) : 이미 설치된 패키지만 새 버전으로 갱신하고, 안 깔린 패키지는 건드리지 않는 rpm 옵션.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

RPM 패키지를 설치하면서, 같은 패키지의 구버전이 이미 설치돼 있으면 교체하고 없으면 새로 설치하며 진행 막대를 표시하는 명령으로 가장 적절한 것은?

문제 2

파일 /usr/sbin/httpd가 어느 RPM 패키지에 의해 설치되었는지 확인하는 명령은?

문제 3

RPM과 비교했을 때 YUM/DNF의 가장 핵심적인 장점은?

문제 4

Debian 계열에서 dpkg -r와 dpkg -P의 차이로 옳은 것은?

문제 5

apt update 명령의 역할로 가장 정확한 것은?

문제 6

Red Hat 계열의 rpm -qa에 대응하는 Debian 계열의 명령은?

문제 7

다음 중 고수준 패키지 도구(저장소 기반·의존성 자동 해결)끼리 올바르게 짝지어진 것은?

이전Week 6 종합 복습: 프로세스·초기화·예약을 한 장으로 꿰기Week 6 · Day 5다음 소스 컴파일과 라이브러리: tar→configure→make→make install의 의미Week 7 · Day 2

참고 공식 자료

  • 리눅스마스터 1급 공식 출제 기준(새 탭에서 열림)

이 페이지

  • RPM — Red Hat 계열의 저수준 패키지 도구
  • YUM / DNF — 의존성을 자동 해결하는 고수준 도구
  • DEB · dpkg — Debian 계열의 저수준 패키지 도구
  • APT — Debian 계열의 고수준 도구
  • 용어
  • 연습 문제