Dpkg

한국 데비안 사용자 모임
둘러보기로 가기 검색하러 가기

앞에서 설명한 것과 같이 dselect, apt의 작업을 실제적으로 수행하는 것은 dpkg 패키지 관리 도구이다. dpkg는 수많은 옵션이 있는데 중요한 몇 가지만 살펴보기로 하자.

-i|--install 패키지파일

패키지를 설치하는 명령어이다.

-r|--remove 패키지명

설치된 패키지를 삭제하는 명령어이다.

-P|--purge 패키지명

-r과는 달리 환경 설정 파일까지 삭제하는 명령어이다.

-l|--list 패턴

패턴에 일치하는 패키지를 찾아준다.

khkim:/# dpkg --list apache*
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
ii  apache         1.3.22-2       Versatile, high-performance HTTP server
ii  apache-common  1.3.22-2       Support files for all Apache webservers
pn  apache-dev     <none>         (no description available)
pn  apache-doc     <none>         (no description available)
un  apache-modules <none>         (no description available)
pn  apache-perl    <none>         (no description available)
pn  apache-ssl     <none>         (no description available)

-s|--status 패키지명

패키지의 상태 및 정보를 나타낸다. apt-cache show와 비슷하다.

-L|--listfiles 패키지명

패키지에 들어있는 목록, 파일, 파일 경로를 보여준다.

khkim:/# dpkg -L apache
/.
/etc
/etc/cron.daily
/etc/cron.daily/apache
/etc/apache
/etc/init.d
/etc/init.d/apache
/var
/var/log
/var/log/apache
/var/cache
/var/cache/apache
/usr
...

-S|--search 패턴

설치되어 있는 패키지 중에서 패턴에 맞는 패키지를 검색해준다.

khkim:/# dpkg -S httpd.conf
apache: /usr/share/doc/apache/examples/httpd.conf
apache: /usr/share/doc/apache/examples/httpd.conf-dist
khkim:/# dpkg -S stdio.h
perl: /usr/lib/perl/5.6.1/CORE/nostdio.h
libc6-dev: /usr/include/stdio.h
libc6-dev: /usr/include/bits/stdio.h
gcc-3.0: /usr/lib/gcc-lib/i386-linux/3.0.2/include/stdio.h

--force 옵션

dpkg --force-help를 실행하면 force 옵션과 관련된 내용이 나온다. 강제 옵션을 쓰다가 생기는 문제를 충분히 해결할 수 있는 능력이 되는 사용자가 쓰기를 권한다. 가장 많이 쓰는 옵션으로는 depends-version, depends인데, 처음 옵션은 버전 의존성 문제를 경고로 넘어가고 두 번째 옵션은 모든 의존성 문제를 경고로 보고 그냥 넘어가게 된다.

어떤 패키지를 의존이 걸린 문제를 무시하고 무조건 설치하려면

dpkg --force-depends --install package

와 같이 하면 된다. 물론 삭제도 같은 방법으로 하면 된다.

#dpkg --force-help
dpkg 강제 옵션 - 문제가 발생할 때 컨트롤 방법:
 경고하지만 계속:  --force-<항목>,<항목>,...
 오류로 중단:      --refuse-<항목>,<항목>,... | --no-force-<항목>,...
강제할 항목:
 all                    모든 강제 옵션을 사용
 auto-select [*]        설치하려는(지우려는) 꾸러미를 선택(선택해제)
 downgrade [*]          꾸러미를 더 낮은 버전으로 바꾸기
 configure-any          필요한 모든 꾸러미를 설정
 hold                   고정 상태의 꾸러미라도 처리
 bad-path               PATH에 중요한 프로그램이 없는 문제가 있어도 계속
 not-root               root가 아닐 경우에도 설치(지우기)를 시도
 overwrite              다른 꾸러미에 있는 파일을 덮어 쓰기
 overwrite-diverted     전환된 파일을 전환되지 않은 파일로 덮어 쓰기
 bad-verify             꾸러미 검사가 실패하더라도 설치
 depends-version [!]    버전 의존성 문제를 경고로 취급
 depends [!]            모든 의존성 문제를 경고로 취급
 confnew [!]            물어보지 않고, 항상 색로운 설정 파일 사용
 confold [!]            물어보지 않고, 항상 기존 설정 파일 사용
 confdef [!]            새 설정 파일이 있으면 기본값 사용.  기본값이 없는
                        경우에는 confold나 confnew 옵션이 없으면 물어봅니다
 confmiss [!]           항상 빠진 설정 파일을 설치
 conflicts [!]          충돌하는 꾸러미라도 설치 허용
 architecture [!]       꾸러미의 아키텍쳐가 달라도 처리
 overwrite-dir [!]      다른 꾸러미에 있는 디렉토리를 덮어 쓰기
 remove-reinstreq [!]   다시 설치해야 할 꾸러미 지우기
 remove-essential [!]   없어선 안 될 꾸러미 지우기

경고 - [!]가 붙은 옵션을 사용하면 설치 상태를 심각하게 망가뜨릴 수 있습니다.
[*]가 표시된 강제 옵션은 기본값으로 켜집니다.

예제

1.설치

dpkg --install hanterm   ,     rpm -Uvh hanterm

2.지우기

dpkg --purge hanterm  ,  dpkg --remove hanterm    rpm -e hanterm

3.설치된 목록 중에서 한텀 패키지 찾기

dpkg --list | grep hanterm  ,   rpm -qa | grep hanterm

4.설치하기 전에 정보 보기

dpkg --info hanterm   ,  dpkg --contents hanterm    ,   rpm -qpl hanterm   

작성자 및 의견

최초 작성 2002년 11월 15일 -- 김기헌

예제 추가 2004년 05월 26일 -- 차차

강제옵션 더하기 2004년 10월 1일 -- 양유성