개념 사전 · 프로그램

dpkg

데비안 패키지 관리자

는 계열의 deb 패키지를 풀고 설정하며 로컬 설치 상태를 기록하는 패키지 관리자이다. 가 저장소의 후보와 의존성을 계산한 뒤 의 설치 단계를 이용하는 방식으로 역할을 나눈다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • deb 파일의 내용과 제어 정보를 설치하고 패키지 상태를 기록한다.
  • 파일 목록·소유 패키지·설치 상태를 조회하여 구성의 근거를 찾는다.
  • 설정 완료 여부와 남은 설정 파일 등 세부 상태를 구분한다.

02어떤 순서로 동작하나

  1. 제어 정보 읽기

    패키지 메타데이터와 설치 스크립트 등 제어 정보를 준비한다. 작업 유형과 기존 설치 상태에 따라 실행되는 스크립트 단계는 달라진다.

  2. 파일 풀기

    패키지의 파일을 설치 경로에 배치한다. 상태는 파일이 풀렸지만 전체 설정이 완료되지 않았음을 나타낸다.

  3. 설정 처리

    의존성 등 필요한 조건을 충족하면 처리와 등의 설정 단계를 수행한다. 중간 오류가 나면 half-configured 같은 상태로 남을 수 있다.

  4. 완료 상태 기록

    정상적으로 풀기·설정이 끝나면 상태가 된다. 제거 후에도 이 남을 수 있어 상태와 완전 미설치를 구분한다.

03먼저 알아둘 용어와 구성요소

파일은 풀렸지만 설정 단계가 완료되지 않은 패키지 상태이다.
패키지가 정상적으로 풀리고 설정된 상태이다. 응용 프로그램의 모든 외부 의존 서비스까지 정상이라는 뜻은 아니다.
프로그램 제거 후 설정 파일 등이 남아 있는 상태이다.
패키지가 특별히 관리하는 설정 파일이다. 사용자가 바꾼 설정을 업그레이드에서 어떻게 처리할지와 관련된다.
패키지 설정 시 실행될 수 있는 유지관리 스크립트이다.
설치 데이터베이스에서 상태·파일 목록·소유 관계를 조회하는 도구이다.
LEARN THROUGH PRACTICE

저장소의 모듈 목록과 실제 설치 버전 구별하기

사용 가능한 패키지 선택지, 설치 데이터베이스, 실행 파일 버전을 구분하여 버전 확인 결과를 해석한다.

실습 구성과 전제

  • 의 모듈 목록과 의 는 서로 다른 시스템 사례다. 같은 서버에서 이어 실행한 결과가 아니다.
  • 화면의 버전은 촬영 시점의 상태다. 현재 권장 버전이나 최신 버전 목록으로 읽지 않는다.
  1. module list를 설치 목록으로 오해하지 않는다

    • 의 모듈 목록에는 이름·스트림·프로필과 표시 기호가 나온다. 스트림은 배포판이 제공하는 패키지 계열의 선택지이며, 여러 줄이 모두 설치되어 있다는 뜻은 아니다.
    • 기본값 표시 [d]와 활성화·설치 표시는 서로 다르다. 출력 하단의 기호 설명과 저장소 구성을 함께 읽어야 한다.
    bash
    dnf module list php
    rpm -q php
    php --version

    모듈을 제공하는 계열 환경의 조회 예시다.

    5/26 - php, mariaDB · 실습·개념 참고 화면 4원본 크기로 보기 ↗
    • MariaDB·nginx·PHP 등 이름 아래에 여러 버전 스트림이 나열된다.
    • 각 스트림에는 프로필과 [d] 같은 표시가 붙어 있어 단순 버전 문자열 이상의 상태를 담는다.
    확인 기준

    사용 중인 버전을 확인하려면 설치 데이터베이스와 실행 파일을 추가 조회한다. 모듈을 제공하지 않는 배포판 버전에서는 같은 출력이 나오지 않을 수 있다.

  2. 설치 데이터베이스의 이름·버전을 읽는다

    • -W는 계열 설치 데이터베이스에서 지정 패키지를 조회한다. 화면의 두 제품 버전은 이 시스템에 등록된 패키지 정보다.
    • 패키지가 설치되었다고 서비스가 정상 실행 중인 것은 아니다. 설정 오류나 중지 상태는 서비스 조회로 별도 확인한다.
    bash
    dpkg-query -W -f='${Package}\t${Version}\t${db:Status-Status}\n' nginx

    계열에서 버전과 설치 상태 필드를 함께 읽는 재구성 예시다.

    9/1 - beat, nessus · 명령·상태 출력 1원본 크기로 보기 ↗
    • dpkg-query -W 뒤에 elasticsearch와 kibana 두 패키지명이 지정되어 있다.
    • 결과는 제품별 한 줄로 버전을 출력하며, 두 줄 모두 9.5.2가 보인다.
    확인 기준

    조회 오류와 비어 있는 결과를 성공적인 미설치 확인과 혼동하지 않는다. 패키지명 및 명령 종료 상태도 함께 읽는다.

  3. 실행되는 파일의 출처까지 연결한다

    • PATH에서 먼저 찾은 프로그램이 방금 조회한 패키지의 실행 파일인지 확인한다. 별도 설치한 버전이나 가상 환경이 앞에 있을 수 있다.
    • 명령 경로를 찾은 뒤 -qf 또는 -S로 소유 패키지를 연결한다. 패키지 버전과 프로그램의 자체 버전 표기는 배포판 수정 번호 등으로 형태가 다를 수 있다.
    bash
    command -v php
    readlink -f "$(command -v php)"
    # RPM 계열: rpm -qf /실제/실행파일
    # Debian 계열: dpkg-query -S /실제/실행파일

    경로를 먼저 확인한 다음 해당 배포판의 파일 소유 조회를 적용한다.

    확인 기준

    설치 버전과 실행 버전이 다르면 저장소를 바로 바꾸기보다 실제 경로·심볼릭 링크·가상 환경부터 확인한다.

실습에서 확인한 동작 원리

  • 저장소의 선택지, 설치 기록, 실행 중인 프로그램은 서로 다른 관찰 지점이다.
  • 목록의 버전 숫자만 비교하지 말고 스트림 표시·설치 상태·실행 경로를 함께 연결한다.
관련 개념·전체 실습 화면 이어서 읽기 →
동작·명령 참고 문서

04예제로 따라가기

  • -W는 설치 데이터베이스의 패키지 상태를 읽는 조회 예이다. 실제 목록을 대신하지 않는다.
  • -S /usr/bin/example은 파일이 어느 패키지에서 왔는지 추적하는 형식이다.
  • 파일이 존재하지만 패키지 상태가 인 예에서는 아직 설정되지 않은 결과일 수 있다. 파일 복사 성공과 설치 완료를 구분한다.

05혼동하기 쉬운 점과 확인 기준

  • deb 파일 하나를 로 지정했다는 이유로 모든 의존 패키지가 저장소에서 자동 해결된다고 가정하지 않는다.
  • purge도 사용자의 모든 홈 디렉터리 데이터까지 자동으로 지우는 의미는 아니다. 패키지가 관리하는 범위와 프로그램이 만든 데이터를 구분한다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.