개요
우분투 및 데비안 계열 리눅스에서 .deb 패키지를 직접 다루는 저수준 도구인 dpkg 명령어의 핵심 사용법을 정리합니다. 패키지 설치부터 설치된 파일 목록 조회, 상태 확인, 설정 파일까지 포함한 완전 삭제(purge) 및 의존성 해결 방법까지 실습 예제를 통해 자세히 알아봅니다.
1. 실습용 .deb 패키지 준비 및 설치 상태 확인
dpkg 명령어 실습을 안전하게 진행할 임시 작업 디렉터리를 생성하고 이동하기 위해 mkdir -p /tmp/dpkg-demo && cd /tmp/dpkg-demo 명령어를 실행합니다.

설치 실습에 사용할 샘플 데비안 패키지(sl)를 시스템에 설치하지 않고 파일만 내려받기 위해 apt-get update -qq && apt-get download -y sl 명령어를 실행합니다.

dpkg -l 명령어는 시스템에 설치된 모든 패키지의 상태 목록을 간략히 조회합니다.
출력의 맨 앞자리 ii는 패키지가 정상적으로 설치되었음을 의미하며, 파이프라인(grep, head)을 연결하여 원하는 패키지만 선별해 확인할 수 있습니다.
⚙️ [주요 옵션]
-i (--install) : 지정한 .deb 패키지 파일을 시스템에 설치합니다.-r (--remove) : 설정 파일을 남겨두고 패키지만 시스템에서 삭제합니다.-P (--purge) : 설정 파일을 포함한 패키지의 모든 요소를 완전히 삭제합니다.-l (--list) : 시스템에 설치된 패키지 목록과 상태를 조회합니다.-s (--status) : 특정 패키지의 설치 상태와 의존성 등 상세 정보를 확인합니다.-L (--listfiles) : 특정 패키지가 시스템에 설치한 파일 목록을 확인합니다.-c (--contents) : 설치되지 않은 .deb 패키지 파일 내부에 포함된 파일 목록을 미리 확인합니다.-I (--info) : 설치되지 않은 .deb 패키지 파일의 메타데이터와 제어 정보를 미리 확인합니다.--unpack : 패키지의 압축만 풀고 구성(configure)은 진행하지 않습니다.--configure : 압축 해제된 미완료 패키지의 환경 설정을 마무리합니다.

dpkg -s 명령어는 시스템에 이미 설치된 특정 패키지의 설치 상태, 버전, 의존성(Depends) 등 상세 메타데이터를 확인합니다.
실행 결과에서 Status: install ok installed 항목을 통해 패키지가 정상적으로 설치 및 등록되어 있음을 확인할 수 있습니다.

2. .deb 파일 정보 확인 및 dpkg -i 패키지 설치
실습용 패키지 파일이 저장된 작업 디렉터리로 이동하기 위해 cd /tmp/dpkg-demo 명령어를 실행합니다.

dpkg -I 명령어는 설치되지 않은 .deb 패키지 파일의 메타데이터와 패키지 정보를 미리 확인합니다.
출력 결과의 Package, Version, Depends 항목을 통해 설치 대상 패키지의 버전과 정상 동작에 필요한 의존성 패키지 목록을 사전에 점검할 수 있습니다.

dpkg -c 명령어는 .deb 패키지 파일이 시스템에 설치될 때 실제로 어느 경로에 어떤 파일들이 배치되는지 미리 확인합니다.
실행 결과를 통해 실행 파일(/usr/games/sl) 및 문서 파일들이 생성될 시스템 디렉터리 경로를 사전에 파악할 수 있습니다.

dpkg -i 명령어는 지정한 데비안 패키지(.deb) 파일을 시스템에 직접 설치합니다.
패키지 압축 해제(Unpacking)와 설정(Setting up) 과정을 거쳐 시스템에 프로그램 파일들을 배치하고 등록을 완료합니다.

설치된 패키지가 정상적으로 작동하는지 확인하기 위해 /usr/games/sl -a || true 명령어를 실행합니다.

3. 설치된 패키지 추적: 파일 목록 및 소유 패키지 역추적
dpkg -L 명령어는 지정한 패키지가 시스템에 설치한 모든 디렉터리와 파일의 전체 경로 목록을 확인합니다.
실행 결과를 통해 실행 파일(/usr/games/sl), 매뉴얼 문서, 저작권 파일 등이 시스템 내 어느 위치에 배치되었는지 추적할 수 있습니다.

dpkg -S 명령어는 특정 파일의 전체 경로를 지정하여 해당 파일을 소유하고 생성한 패키지명을 역추적합니다.
실행 결과에서 sl: /usr/games/sl 형태로 출력되어 /usr/games/sl 바이너리가 sl 패키지에 속해 있음을 명확히 확인할 수 있습니다.

dpkg -S 명령어로 심볼릭 링크나 별칭 경로를 조회할 때 일치하는 패키지 정보가 없으면 아무런 결과도 출력되지 않습니다.
최신 우분투 시스템에서는 UsrMerge 구조로 인해 /bin 디렉터리가 /usr/bin으로 심볼릭 링크되어 있으므로, 실제 정규 경로인 /usr/bin/ls 형태로 조회해야 정확한 소유 패키지(coreutils)를 확인할 수 있습니다.

4. 패키지 삭제(remove vs purge)와 의존성 문제 해결
dpkg -r 명령어는 패키지의 환경 설정 파일은 남겨두고 바이너리와 실행 관련 파일만 시스템에서 삭제합니다.
실행 결과에서 Removing sl 메시지와 함께 지정한 sl 패키지가 안전하게 제거되었음을 확인할 수 있습니다.

dpkg -P 명령어는 패키지에 남아 있는 설정 파일과 구성 정보까지 시스템에서 완전히 제거(Purge)합니다.
앞서 일반 삭제(-r)로 남아 있던 잔여 설정 파일까지 완벽하게 정리하여 초기 상태로 되돌립니다.

dpkg 수동 설치 과정에서 발생할 수 있는 깨진 의존성 문제를 자동으로 검사하고 복구하기 위해 apt-get install -f -y 명령어를 실행합니다.

실습 과정에서 생성한 임시 디렉터리와 데비안 패키지 파일을 시스템에서 완전히 정리하기 위해 rm -rf /tmp/dpkg-demo 명령어를 실행합니다.

지금까지 우분투 환경에서 .deb 패키지를 다루기 위한 dpkg의 핵심 명령어와 설치, 조회, 삭제 실무 활용법을 간단하게 정리해보았습니다.
상황에 맞는 적절한 옵션을 활용하여 시스템 패키지를 더욱 안정적이고 효율적으로 관리해보시기 바랍니다.