우분투 패키지 관리의 핵심 dpkg 명령어 완벽 정복 - deb 설치부터 삭제·조회 실무 가이드

개요

우분투 및 데비안 계열 리눅스에서 .deb 패키지를 직접 다루는 저수준 도구인 dpkg 명령어의 핵심 사용법을 정리합니다. 패키지 설치부터 설치된 파일 목록 조회, 상태 확인, 설정 파일까지 포함한 완전 삭제(purge) 및 의존성 해결 방법까지 실습 예제를 통해 자세히 알아봅니다.

1. 실습용 .deb 패키지 준비 및 설치 상태 확인

dpkg 명령어 실습을 안전하게 진행할 임시 작업 디렉터리를 생성하고 이동하기 위해 mkdir -p /tmp/dpkg-demo && cd /tmp/dpkg-demo 명령어를 실행합니다.

mkdir -p /tmp/dpkg-demo && cd /tmp/dpkg-demo

설치 실습에 사용할 샘플 데비안 패키지(sl)를 시스템에 설치하지 않고 파일만 내려받기 위해 apt-get update -qq && apt-get download -y 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 -l | grep -E ‘^ii’ | head -n 10

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

dpkg -s bash

2. .deb 파일 정보 확인 및 dpkg -i 패키지 설치

실습용 패키지 파일이 저장된 작업 디렉터리로 이동하기 위해 cd /tmp/dpkg-demo 명령어를 실행합니다.

cd /tmp/dpkg-demo

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

dpkg -I sl_*.deb

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

dpkg -c sl_*.deb

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

dpkg -i sl_*.deb

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

/usr/games/sl -a || true

3. 설치된 패키지 추적: 파일 목록 및 소유 패키지 역추적

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

dpkg -L sl

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

dpkg -S /usr/games/sl

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

dpkg -S /bin/ls

4. 패키지 삭제(remove vs purge)와 의존성 문제 해결

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

dpkg -r sl

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

dpkg -P sl

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

apt-get install -f -y

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

rm -rf /tmp/dpkg-demo

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