본문 바로가기
LinuX

dpkg와 apt 사용하기

by 타마마임팩트_쫀 2008. 1. 8.
rpm 다음으로 리눅스 배포판에서 가장 널리 쓰이는 패키지 관리자는 dpkg 로  .deb 패키지를 관리할때 사용한다. 이름이 얘기해주듯 .deb 포맷은 데비안 배포판에서 나온 것이다. 물론 다른 배포판에서도 사용한다. rpm 포맷처럼 .deb 포맷도 시스템이 일관성을 유지할 수 있도록 돕기 위해 의존성과 파일정보를 유지한다.

dpkg 는 데비안 패키지 관리자의 저수준 인터페이스로 대부분의 기능은 apt 통합 프로그램 또는 dselect, aptitude, gnome-apt, synaptic, kpackage 와 같은 프론트엔드를 통해 처리한다.

데비안 시스템에 .deb 패키지는 다음과 같이 설치한다. 예를 들어 superfrob_4-1_i386.deb 라는 이름의 패키지가 있다면 다음과 같이 설치한다.

dpkg -i superfrob_4-1_i386.deb

rpm 과 달리 dpkg 는 새로운 패키지를 설치하는 것과 기존의 패키지를 업그레이드 하는 것을 구분하지 않는다. 둘다 -i 옵션을  사용한다.


패 키지를 언인스톨하려면 -r(--remove) 또는 -P(--purge) 옵션을 사용한다. -r 옵션은 패키지를 제가하긴 하지만 설정 파일은 남겨둔다. 반면에 -P 는 시스템 전반의 설정 파일도 함께 제거한다. 예를 들어 superfrob 을 완전히 제거하려면 다음과 같이 한다.

dpkg -P superfrob


dpkg 에서 -l(--list) 옵션을 사용하여 시스템에 어떤 패키지가 설치되어 있는지 알 수 있다.

yoda@yoda-desktop:~$dpkg -l

희망상태=알수없음(u)/설치(i)/지우기(r)/깨끗이(p)/고정(h)
| 상태=설치안됨(n)/설치됨(i)/설정(c)/풀림(u)/설정실패(f)/일부설치(h)
|/ 오류?=(없음)/고정(h)/다시설치필요(r)/둘-다(x) (상태, 오류가 대문자=불량)
||/ 이름                                 버전                                설

+++-======================================-=====================================-============================================
ii  acpi                                   0.09-1
 displays information on ACPI devices
ii  acpi-support                           0.85
 a collection of useful events for acpi
ii  acpid                                  1.0.4-1ubuntu11
 Utilities for using ACPI power management
ii  adduser                                3.80ubuntu2
 Add and remove users and groups
ii  alacarte                               0.8-0ubuntu12
 easy menu editing
ii  alien                                  8.64
 install non-native packages with dpkg
ii  alsa-base                              1.0.10-4ubuntu4
 ALSA driver configuration files
ii  alsa-utils                             1.0.10-1ubuntu14
 ALSA utilities
...

출력내용의 처음 3줄은 각 패키지 이름 앞에 3개의 열이 어떤 의미를 갖는지 알려준다. 대부분 ii 로
패키지가 알맞게 설치되었다는 뜻이다.

특정 패키지가 어떤 버전인지 궁금 할 경우엔 -l 옵션에 패키지 이름을 붙인다.

yoda@yoda-desktop:~$ dpkg -l gcc
희망상태=알수없음(u)/설치(i)/지우기(r)/깨끗이(p)/고정(h)
| 상태=설치안됨(n)/설치됨(i)/설정(c)/풀림(u)/설정실패(f)/일부설치(h)
|/ 오류?=(없음)/고정(h)/다시설치필요(r)/둘-다(x) (상태, 오류가 대문자=불량)
||/ 이름         버전         설명
+++-==============-==============-============================================
ii  gcc            4.0.3-1        The GNU C compiler


특정 파일이 어디에 속하는지도 알 수 있다.

yoda@yoda-desktop:~$ dpkg --search /bin/false
coreutils: /bin/false

설치되어 있는  패키지 대한 정보를 출력할 수도 있다.(-s 옵션을 써도 됨)

yoda@yoda-desktop:~$ dpkg --status dpkg
Package: dpkg
Essential: yes
Status: install ok installed
Priority: required
Section: base
Installed-Size: 5424
Origin: debian
Maintainer: Scott James Remnant <scott@netsplit.com>
Bugs: debbugs://bugs.debian.org
Architecture: i386
Version: 1.13.11ubuntu6
Replaces: dpkg-doc-ja, dpkg-static, manpages-de (<= 0.4-3)
Pre-Depends: libc6 (>= 2.3.4-1), coreutils (>= 5.93-1)
Suggests: apt
Conflicts: sysvinit (<< 2.82-1), dpkg-iasearch (<< 0.11), dpkg-static, dpkg-dev (<< 1.10)
Conffiles:
 /etc/dpkg/dpkg.cfg a56f60fb9ab2a5cfe8ea3b30ea6fa35c
 /etc/dpkg/origins/debian 731423fa8ba067262f8ef37882d1e742
 /etc/alternatives/README 69c4ba7f08363e998e0f2e244a04f881
 /etc/logrotate.d/dpkg 501f8c90b83c7ea180868ca82e1e82d1
Description: package maintenance system for Debian
 This package contains the low-level commands for handling the installation
 and removal of packages on your system.
 .
 In order to unpack and build Debian source packages you will need to
 install the developers' package `dpkg-dev' as well as this one

--info 옵션을 사용하면 가지고 있는 아카이브에 대해서 정보를 추력할 수 있다. 또한 -c(--contents)옵션을 사용하면 .deb 아카이브에 있는 파일과 디렉토리 목록을 나열할 수 있다.



dpkg 외에도 데비안과 기타 다른 데비안 기반의 배포판은 apt 프로그램을 제공한다. apt 는 'Advanced Package Tool'을 뜻하는 것으로, 다양한 패키지의 형식을 처리할 수 있는 아카이브(독립적인) 시스템으로 설계되었다.
아마도 apt 의 가장 중요한 기능은 자동으로 의존성 문제를 해결해 준는 능력일 것이다. 만약 어떤 패키지를 설치하려는데 다른 패키지가 필요하다면 apt 는 스스로 그 필요한 패키지를 다양한 출처(cd -rom, 로컬 미러 사이트, 인터넷등) 에서 찾으려고 시도 할 것이다.

apt 의 가장 유용한 인터페이스는 apt-get 명령이다. apt-get 은 사용 가능한 패키지 목록(페키지 캐시) 을 관리와 의존성 문제를 해결하고 패키질르 설치하는 데 사용한다. 보통 apt 캐시를 갱신하는데서 부터 시작한다.

yoda@yoda-desktop:~$apt-get update

받기:1 http://kr.archive.ubuntu.com dapper Release.gpg [189B]
받기:2 http://kr.archive.ubuntu.com dapper-updates Release.gpg [189B]
기존 http://kr.archive.ubuntu.com dapper Release
기존 http://kr.archive.ubuntu.com dapper-updates Release
기존 http://kr.archive.ubuntu.com dapper/main Packages
기존 http://kr.archive.ubuntu.com dapper/restricted Packages
기존 http://kr.archive.ubuntu.com dapper/main Sources
기존 http://kr.archive.ubuntu.com dapper/restricted Sources
기존 http://kr.archive.ubuntu.com dapper-updates/main Packages
기존 http://kr.archive.ubuntu.com dapper-updates/restricted Packages
기존 http://kr.archive.ubuntu.com dapper-updates/main Sources
기존 http://kr.archive.ubuntu.com dapper-updates/restricted Sources
받기:3 http://security.ubuntu.com dapper-security Release.gpg [189B]
기존 http://security.ubuntu.com dapper-security Release
기존 http://security.ubuntu.com dapper-security/main Packages
기존 http://security.ubuntu.com dapper-security/restricted Packages
기존 http://security.ubuntu.com dapper-security/main Sources
기존 http://security.ubuntu.com dapper-security/restricted Sources
내려받기 3바이트, 소요시간 2s (1바이트/초)
꾸러미 목록을 읽는 중입니다... 완료

출력 내용을 보면 배포판에 갱신 내용이 있으며, 시스템에 설치되어 있는 패키지를 업그레이드해야 할 것이라는 사실을 아려준다. 자동으로 하기 위해서는 apt-get 의  upgrade 옵션을 사용한다.

yoda@yoda-desktop:~$ sudo apt-get upgrade
꾸러미 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
다음 꾸러미를 업그레이드할 것입니다:
  app-install-data-commercial base-files cupsys cupsys-bsd cupsys-client eog
  file-roller firefox firefox-gnome-support gdm gedit gedit-common gnome-about
  gnome-accessibility-themes gnome-applets gnome-applets-data
  gnome-desktop-data gnome-games gnome-games-data gnome-menus gnome-panel
  gnome-panel-data gnome-screensaver gnome-session gnome-themes gnupg
  gstreamer0.10-alsa gstreamer0.10-gnomevfs gstreamer0.10-plugins-base
  gstreamer0.10-plugins-base-apps gstreamer0.10-x gtk2-engines-clearlooks
  gtk2-engines-crux gtk2-engines-highcontrast gtk2-engines-industrial
  gtk2-engines-lighthouseblue gtk2-engines-mist gtk2-engines-pixbuf
  gtk2-engines-redmond95 gtk2-engines-smooth gtk2-engines-thinice gtkhtml3.8
  imagemagick language-pack-en language-pack-en-base language-pack-gnome-en
  language-pack-gnome-en-base language-pack-gnome-ko
  language-pack-gnome-ko-base language-pack-ko language-pack-ko-base
  language-selector language-selector-common libcupsimage2 libcupsys2
  libeel2-2 libeel2-data libgnome-desktop-2 libgnome-menu2 libgnomeui-0
  libgnomeui-common libgstreamer-plugins-base0.10-0 libgtk2.0-0 libgtk2.0-bin
  libgtk2.0-common libgtkhtml3.8-15 libgtksourceview-common
  libgtksourceview1.0-0 libkrb53 libmagick9 libnautilus-burn3
  libnautilus-extension1 libnspr4 libnss3 libpanel-applet2-0 libpango1.0-0
  libpango1.0-common libtiff4 libtotem-plparser1 libwmf0.2-7
  linux-image-2.6.15-26-386 nautilus nautilus-cd-burner nautilus-data
  python-gmenu totem totem-gstreamer ubuntu-base ubuntu-minimal
  ubuntu-standard yelp zenity
92개 업그레이드, 0개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
74.2M바이트 아카이브를 받아야 합니다.
압축을 풀면 1430k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까 [Y/n]? y
...

만약 업그레이드 하려는 패키지가 의존성 문제에 걸린다면 그것은 업그레이드 하지 않고 대신 hold(잠금) 상태로 바꾼다. apt-get upgrade는 hold 상태인 패키지를 판올림하지 않을 것이다.(이것이 hold(잠금)의 의미이기도 하다.)
만약 이 패키지를 업그레이드 하고 싶다면 apt-get install 명령을 사용한다. apt 는 자동으로 홀드 상태를 해지하고 지정된 패키지와 더불어 의존적인 패키지들까지 다운로드해서 설치하거나 업그레이드 한다.

apt 의 또다른 유용한 기능으로는 저장 공간에 들어 있는 패키지 정보를 찾을 수 있게 해주는 기능이 있다. apt-cache 명령은 설치할 수 있는 패키지에 대한 정보를 찾는데 사용한다. 일반적으로 apt-cache 명령은 단어 또는 완전한 문구 (따옴표를 사용함) 또는 정규 표현식을 사용하여 패키지의 설명에서 키워드를 찾아 해당 패키지를 찾는다. 예를 들어 ogg vorbis 로 인코딩된 음악 파일을 재생 시켜주는 패키지를 찾는다면 다음과 같이 search 옵션을 사용하여 해당 패키지를 찾을 수 있다.

yoda@yoda-desktop:~$ apt-cache search ''ogg vorbis''
juk - music organizer and player for KDE
k3b - A sophisticated KDE CD burning application
kaudiocreator - CD ripper and audio encoder frontend for KDE
libakode-dev - development files for akode
libakode2 - akode plugin for aRts
libmpcdec-dev - Musepack (MPC) format library [development files]
libmpcdec3 - Musepack (MPC) format library
libshout3 - MP3/Ogg Vorbis broadcast streaming library
libshout3-dev - MP3/Ogg Vorbis broadcast streaming library (development)
libspeex-dev - The Speex Speech Codec
libspeex1 - The Speex Speech Codec
libtag1-dev - TagLib Audio Meta-Data Library [development]
libtag1c2a - TagLib Audio Meta-Data Library
libtagc0 - TagLib Audio Meta-Data Library (C bindings)
libtagc0-dev - TagLib Audio Meta-Data Library (C bindings) [development]
libvorbis-dev - The Vorbis General Audio Compression Codec (development files)
libvorbis0a - The Vorbis General Audio Compression Codec
libvorbisenc2 - The Vorbis General Audio Compression Codec
libvorbisfile3 - The Vorbis General Audio Compression Codec
python-pyvorbis - A Python interface to the Ogg Vorbis library
speex-doc - Documentation for speex
vorbis-tools - several Ogg Vorbis tools
vorbisgain - add suggested volume level for .ogg files as .ogg comment
xmms - Versatile X audio player

여기서 관심 대상의 패키지에 apt-cache 의 show  옵션을 사용하면 자세히 알아볼 수 있다.

yoda@yoda-desktop:~$ apt-cache show xmms
Package: xmms
Priority: optional
Section: sound
Installed-Size: 7256
Maintainer: Josip Rodin <joy-packages@debian.org>
Architecture: i386
Version: 1.2.10+cvs20050809-4ubuntu5
Replaces: x11ampg, x11amp, xmms-vorbis, alsa-xmms
Provides: mp3-decoder, x11ampg, x11amp, xmms-vorbis, alsa-xmms
Depends: libc6 (>= 2.3.4-1), libglib1.2 (>= 1.2.0), libgtk1.2 (>= 1.2.10-4), libice6, libsm6, libssl0.9.8 (>= 0.9.8a-1), libx11-6, libxext6, libxi6, libxxf86vm1Recommends: libasound2 (>> 1.0.10), libaudiofile0 (>= 0.2.3-4), libesd-alsa0 (>= 0.2.35) | libesd0 (>= 0.2.35), libgl1-mesa | libgl1, libmikmod2 (>= 3.1.10), libogg0 (>= 1.1.3), libvorbis0a (>= 1.1.2), libvorbisfile3 (>= 1.1.2), zlib1g (>= 1:1.2.1), unzip
Conflicts: x11ampg, x11amp, xmms-vorbis, alsa-xmms
Filename: pool/main/x/xmms/xmms_1.2.10+cvs20050809-4ubuntu5_i386.deb
Size: 1053870
MD5sum: 41129fd7158e7992bf611becc7dafd1f
Description: Versatile X audio player
 X MultiMedia System is a player for various audio formats,
 with a customizable interface based on X/GTK+.
 .
 It's able to read and play:
  * Audio MPEG layer 1, 2, and 3 (with mpg123 plug-in),
  * Ogg Vorbis files (with the Ogg Vorbis plug-in),
  * CD Audio (with CDAudio plug-in), with CDDB support,
  * WAV, RAW, AU (with internal wav plug-in and MikMod plug-in),
  * MOD, XM, S3M, and other module formats (with MikMod plug-in),
  * .cin files, id Software.
 It has eSound, OSS, and disk writer support for outputting sound.
 .
 It looks almost the same as famous Winamp, and includes those neat
 features like general purpose, visualization and effect plug-ins,
 several of which come bundled, then spectrum analyzer, oscilloscope,
 skins support, and of course, a playlist window.
Bugs: mailto:ubuntu-users@lists.ubuntu.com
Origin: Ubuntu



더 자세한 내용은 맨패이지나 하우투 등을 찾아보면 된다.

아래는 관련 내용 링크

http://debianusers.org/DebianWiki/wiki.php/APT%20&%20Dpkg%20%C8%C4%B5%FC%20%BA%B8%B1%E2

출처 : http://blog.naver.com/khsrdc/110007559215

'LinuX' 카테고리의 다른 글

linux 파티션 나누기  (0) 2009.05.08
Cron  (0) 2008.11.24
USB 휴대용 저장 장치 마운트  (0) 2008.09.08
linux make law device(리눅스 raw device 생성)  (0) 2008.09.04
apt-get 명령어  (0) 2008.01.08