dpkg
데비안 패키지 관리자
는 계열의 deb 패키지를 풀고 설정하며 로컬 설치 상태를 기록하는 패키지 관리자이다. 가 저장소의 후보와 의존성을 계산한 뒤 의 설치 단계를 이용하는 방식으로 역할을 나눈다.
밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.
01무엇이고, 어떤 일을 하나
- deb 파일의 내용과 제어 정보를 설치하고 패키지 상태를 기록한다.
- 파일 목록·소유 패키지·설치 상태를 조회하여 구성의 근거를 찾는다.
- 설정 완료 여부와 남은 설정 파일 등 세부 상태를 구분한다.
02어떤 순서로 동작하나
- 제어 정보 읽기
패키지 메타데이터와 설치 스크립트 등 제어 정보를 준비한다. 작업 유형과 기존 설치 상태에 따라 실행되는 스크립트 단계는 달라진다.
- 파일 풀기
패키지의 파일을 설치 경로에 배치한다. 상태는 파일이 풀렸지만 전체 설정이 완료되지 않았음을 나타낸다.
- 설정 처리
의존성 등 필요한 조건을 충족하면 처리와 등의 설정 단계를 수행한다. 중간 오류가 나면 half-configured 같은 상태로 남을 수 있다.
- 완료 상태 기록
정상적으로 풀기·설정이 끝나면 상태가 된다. 제거 후에도 이 남을 수 있어 상태와 완전 미설치를 구분한다.
03먼저 알아둘 용어와 구성요소
- 파일은 풀렸지만 설정 단계가 완료되지 않은 패키지 상태이다.
- 패키지가 정상적으로 풀리고 설정된 상태이다. 응용 프로그램의 모든 외부 의존 서비스까지 정상이라는 뜻은 아니다.
- 프로그램 제거 후 설정 파일 등이 남아 있는 상태이다.
- 패키지가 특별히 관리하는 설정 파일이다. 사용자가 바꾼 설정을 업그레이드에서 어떻게 처리할지와 관련된다.
- 패키지 설정 시 실행될 수 있는 유지관리 스크립트이다.
- 설치 데이터베이스에서 상태·파일 목록·소유 관계를 조회하는 도구이다.
저장소의 모듈 목록과 실제 설치 버전 구별하기
사용 가능한 패키지 선택지, 설치 데이터베이스, 실행 파일 버전을 구분하여 버전 확인 결과를 해석한다.
실습 구성과 전제
- 의 모듈 목록과 의 는 서로 다른 시스템 사례다. 같은 서버에서 이어 실행한 결과가 아니다.
- 화면의 버전은 촬영 시점의 상태다. 현재 권장 버전이나 최신 버전 목록으로 읽지 않는다.
module list를 설치 목록으로 오해하지 않는다
- 의 모듈 목록에는 이름·스트림·프로필과 표시 기호가 나온다. 스트림은 배포판이 제공하는 패키지 계열의 선택지이며, 여러 줄이 모두 설치되어 있다는 뜻은 아니다.
- 기본값 표시 [d]와 활성화·설치 표시는 서로 다르다. 출력 하단의 기호 설명과 저장소 구성을 함께 읽어야 한다.
bashdnf module list php rpm -q php php --version모듈을 제공하는 계열 환경의 조회 예시다.
원본 크기로 보기 ↗- MariaDB·nginx·PHP 등 이름 아래에 여러 버전 스트림이 나열된다.
- 각 스트림에는 프로필과 [d] 같은 표시가 붙어 있어 단순 버전 문자열 이상의 상태를 담는다.
확인 기준사용 중인 버전을 확인하려면 설치 데이터베이스와 실행 파일을 추가 조회한다. 모듈을 제공하지 않는 배포판 버전에서는 같은 출력이 나오지 않을 수 있다.
설치 데이터베이스의 이름·버전을 읽는다
- -W는 계열 설치 데이터베이스에서 지정 패키지를 조회한다. 화면의 두 제품 버전은 이 시스템에 등록된 패키지 정보다.
- 패키지가 설치되었다고 서비스가 정상 실행 중인 것은 아니다. 설정 오류나 중지 상태는 서비스 조회로 별도 확인한다.
bashdpkg-query -W -f='${Package}\t${Version}\t${db:Status-Status}\n' nginx계열에서 버전과 설치 상태 필드를 함께 읽는 재구성 예시다.
원본 크기로 보기 ↗- dpkg-query -W 뒤에 elasticsearch와 kibana 두 패키지명이 지정되어 있다.
- 결과는 제품별 한 줄로 버전을 출력하며, 두 줄 모두 9.5.2가 보인다.
확인 기준조회 오류와 비어 있는 결과를 성공적인 미설치 확인과 혼동하지 않는다. 패키지명 및 명령 종료 상태도 함께 읽는다.
실행되는 파일의 출처까지 연결한다
- PATH에서 먼저 찾은 프로그램이 방금 조회한 패키지의 실행 파일인지 확인한다. 별도 설치한 버전이나 가상 환경이 앞에 있을 수 있다.
- 명령 경로를 찾은 뒤 -qf 또는 -S로 소유 패키지를 연결한다. 패키지 버전과 프로그램의 자체 버전 표기는 배포판 수정 번호 등으로 형태가 다를 수 있다.
bashcommand -v php readlink -f "$(command -v php)" # RPM 계열: rpm -qf /실제/실행파일 # Debian 계열: dpkg-query -S /실제/실행파일경로를 먼저 확인한 다음 해당 배포판의 파일 소유 조회를 적용한다.
확인 기준설치 버전과 실행 버전이 다르면 저장소를 바로 바꾸기보다 실제 경로·심볼릭 링크·가상 환경부터 확인한다.
실습에서 확인한 동작 원리
- 저장소의 선택지, 설치 기록, 실행 중인 프로그램은 서로 다른 관찰 지점이다.
- 목록의 버전 숫자만 비교하지 말고 스트림 표시·설치 상태·실행 경로를 함께 연결한다.
동작·명령 참고 문서
04예제로 따라가기
- -W는 설치 데이터베이스의 패키지 상태를 읽는 조회 예이다. 실제 목록을 대신하지 않는다.
- -S /usr/bin/example은 파일이 어느 패키지에서 왔는지 추적하는 형식이다.
- 파일이 존재하지만 패키지 상태가 인 예에서는 아직 설정되지 않은 결과일 수 있다. 파일 복사 성공과 설치 완료를 구분한다.
05혼동하기 쉬운 점과 확인 기준
- deb 파일 하나를 로 지정했다는 이유로 모든 의존 패키지가 저장소에서 자동 해결된다고 가정하지 않는다.
- purge도 사용자의 모든 홈 디렉터리 데이터까지 자동으로 지우는 의미는 아니다. 패키지가 관리하는 범위와 프로그램이 만든 데이터를 구분한다.
06상세 노트 · 실습 자료
헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.
공식 문서 · 표준
기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.