OS/Linux - Ubuntu

[Linux - 리눅스 / Ubuntu - 우분투] dpkg 명령으로 패키지 관리하기

주누다 2015. 4. 21. 23:01
반응형

dpkg 명령으로 패키지 관리하기

- APT 명령은 페도라의 yum 명령과 비슷

- 두 명령 모두 인터넷이 연결된 환경에서 패키지를 자동으로 설치

- 우분투에서 페도라의 rpm과 같은 명령 =>  dpkg

- 데비안 계열의 리눅스에서 패키지를 관리하는데 사용

- APT 명령도 내부적으로는 dpkg 명령을 사용

- 일반적으로 패키지를 설치할 때 APT 명령을 사용하면 되지만,

  시스템의 특정 파일이 어느 패키지에 속한 것인지를 확인하는 등 보다 세부적인 기능을 사용하려면

  dpkg 명령이 필요



dpkg

- 기능 : 데비안의 패키지 관리 명령

- 형식 : dpkg [옵션] 파일명 또는 패키지명

- 옵션 :

 * '-l' : 설치된 패키지의 목록을 출력

 * '-l 패키지명' : 패키지의 설치 상태를 출력

 * '-s 패키지명' : 패키지의 상세 정보를 출력

 * '-S 경로명' : 경로명이 포함된 패키지를 검색

 * '-L 패키지명' : 패키지가 설치된 파일의 목록을 출력

 * '-c .deb 파일명' : 지정한 .deb 파일의 내용을 출력

 * '-i .deb 파일' : 해당 파일을 설치(sudo)

 * '-r 패키지명' :  해당 패키지를 삭제(sudo)

 * '-P 패키지명' : 해당 패키지와 설정 정보를 모두 삭제(sudo)

 * '-x .deb 파일 디렉터리' : 해당 파일을 지정한 디렉터리에 풀어 놓음

- 사용 예 : dpkg -l, dpkg -s netcat, dpkg -S /bin/ls, sudo dpkg -i netcat_1.10-40_all.deb

1) 패키지 목록 보기 : -l 옵션

- '-l' 옵션을 사용하면 설치되어 있는 패키지의 목록을 출력

- 첫 글자는 상단의 희망 상태를

- 두 번째 글자는 상태를 나타냄

- 처음 두 글자 'ii' 는 희망 상태가 '설치(i)', 상태도 '설치(i)'임을 뜻함

==============================================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ dpkg -l | less

희망상태=알수없음(U)/설치(I)/지우기(R)/깨끗이(P)/고정(H)
| 상태=아님(N)/설치(I)/설정(C)/풀림(U)/절반설정(F)/일부설치(H)/트리거대기(W)/
| /    트리거밀림(T)
|/ 오류?=(없음)/다시설치필요(R) (상태, 오류가 대문자=불량)
||/ 이름                                                  버전                                                Architecture 설명
+++-=====================================================-===================================================-============-===============
ii  account-plugin-aim                                    3.8.6-0ubuntu9.1                                    amd64        Messaging account plugin for AIM
ii  account-plugin-facebook                               0.11+14.04.20140409.1-0ubuntu1                      all          GNOME Control Center account plugin for single signon - facebook
ii  account-plugin-flickr                                 0.11+14.04.20140409.1-0ubuntu1                      all          GNOME Control Center account plugin for single signon - flickr
ii  account-plugin-google                                 0.11+14.04.20140409.1-0ubuntu1                      all          GNOME Control Center account plugin for single signon
ii  account-plugin-jabber                                 3.8.6-0ubuntu9.1                                    amd64        Messaging account plugin for Jabber/XMPP
ii  account-plugin-salut                                  3.8.6-0ubuntu9.1                                    amd64        Messaging account plugin for Local XMPP (Salut)
ii  account-plugin-twitter                                0.11+14.04.20140409.1-0ubuntu1                      all          GNOME Control Center account plugin for single signon - twitter
ii  account-plugin-windows-live                           0.11+14.04.20140409.1-0ubuntu1                      all          GNOME Control Center account plugin for single signon - windows live
ii  account-plugin-yahoo                                  3.8.6-0ubuntu9.1                                    amd64        Messaging account plugin for Yahoo!
ii  accountsservice                                       0.6.35-0ubuntu7.1                                   amd64        query and manipulate user account information
ii  acl                                                   2.2.52-1              :
==============================================================================================


- '-l' 다음에 특정 패키지의 이름을 지정하면 해당 패키지에 관한 정보 출력

==============================================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ dpkg -l zip
희망상태=알수없음(U)/설치(I)/지우기(R)/깨끗이(P)/고정(H)
| 상태=아님(N)/설치(I)/설정(C)/풀림(U)/절반설정(F)/일부설치(H)/트리거대기(W)/
| /    트리거밀림(T)
|/ 오류?=(없음)/다시설치필요(R) (상태, 오류가 대문자=불량)
||/ 이름           버전         Architecture 설명
+++-==============-============-============-=================================
ii  zip            3.0-8        amd64        Archiver for .zip files
sjw-lenovo@sjwlenovo-Lenovo-U310:~$

==============================================================================================



2) 패키지 상세 정보 보기 : -s 옵션

- 패키지의 상세 정보를 보려면 '-s' 옵션을 사용

==============================================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ dpkg -s zip
Package: zip
Status: install ok installed
Priority: optional
Section: utils
Installed-Size: 589
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Multi-Arch: foreign
Version: 3.0-8
Depends: libbz2-1.0, libc6 (>= 2.14)
Recommends: unzip
Description: Archiver for .zip files
 This is InfoZIP's zip program. It produces files that are fully
 compatible with the popular PKZIP program; however, the command line
 options are not identical. In other words, the end result is the same,
 but the methods differ. :-)
 .
 This version supports encryption.
Original-Maintainer: Santiago Vila <sanvila@debian.org>
Homepage: http://www.info-zip.org/Zip.html
sjw-lenovo@sjwlenovo-Lenovo-U310:~$
==============================================================================================



3) 특정 파일이 포함된 패키지 검색하개 : -S 옵션

- 특정 파일이 포함된 패키지를 검색하려면 '-S' 옵션을 사용

- '-S' 옵션의 인자로는 파일의 경로명을 지정

==============================================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ dpkg -S /bin/ls
coreutils: /bin/ls
sjw-lenovo@sjwlenovo-Lenovo-U310:~$

==============================================================================================



4) 패키지가 설치한 파일 목록 검색하기 : -L 옵션

- 지정한 패키지가 설치한 파일의 목록을 검색하려면 '-L' 옵션을 사용

==============================================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ dpkg -L zip
/.
/usr
/usr/bin
/usr/bin/zipnote
/usr/bin/zip
/usr/bin/zipsplit
/usr/bin/zipcloak
/usr/share
/usr/share/doc
/usr/share/doc/zip
/usr/share/doc/zip/TODO
/usr/share/doc/zip/copyright
/usr/share/doc/zip/WHATSNEW
/usr/share/doc/zip/changelog.Debian.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/zipcloak.1.gz
/usr/share/man/man1/zipsplit.1.gz
/usr/share/man/man1/zipnote.1.gz
/usr/share/man/man1/zip.1.gz
/usr/share/doc/zip/changelog.gz
sjw-lenovo@sjwlenovo-Lenovo-U310:~$
==============================================================================================



5) 패키지의 파일 목록 검색하기 : -c 옵션

- '-c' 옵션은 .deb 파일이 가지고 있는 내용을 출력

-  deb 파일 다운로드 예 : 'apt-get download netcat'

==============================================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ dpkg -c netcat_1.10-40_all.deb
drwxr-xr-x root/root         0 2012-06-13 19:15 ./
drwxr-xr-x root/root         0 2012-06-13 19:15 ./usr/
drwxr-xr-x root/root         0 2012-06-13 19:15 ./usr/share/
drwxr-xr-x root/root         0 2012-06-13 19:15 ./usr/share/doc/
drwxr-xr-x root/root         0 2012-06-13 19:15 ./usr/share/doc/netcat/
-rw-r--r-- root/root       735 2011-02-11 14:21 ./usr/share/doc/netcat/copyright
-rw-r--r-- root/root      1729 2012-06-13 19:15 ./usr/share/doc/netcat/changelog.Debian.gz
sjw-lenovo@sjwlenovo-Lenovo-U310:~$

==============================================================================================



6) 패키지 설치하기 : -i 옵션

- dpkg 명령으로 패키지를 설치할 때 지정하는 옵션은 '-i'

- 패키지를 설치하려면  root 권한이 필요

==============================================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo dpkg -i netcat_1.10-40_all.deb
[sudo] password for sjw-lenovo:
Selecting previously unselected package netcat.
(데이터베이스 읽는중 ...현재 206599개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack netcat_1.10-40_all.deb ...
Unpacking netcat (1.10-40) ...
dpkg: dependency problems prevent configuration of netcat:
 netcat 패키지는 다음 패키지에 의존: netcat-traditional (>= 1.10-39): 하지만:
  netcat-traditional 패키지는 설치하지 않았습니다.

dpkg: error processing package netcat (--install):
 의존성 문제 - 설정하지 않고 남겨둠
처리하는데 오류가 발생했습니다:
 netcat
sjw-lenovo@sjwlenovo-Lenovo-U310:~$

==============================================================================================


- netcat 패키지를 설치하려면 netcat-traditional 패키지가 필요하다는 메시지 출력

- APT 명령과 달리 dpkg 명령은 의존성이 있는 패키지를 자동으로 설치하지 않으므로 사용자가 일일이 설치해야함

- 따라서 netcat-traditional 패키지를 내려받아 먼저 설치한 다음 netcat 패키지를 설치해야함.

==============================================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ apt-get download netcat-traditional
받기:1 http://kr.archive.ubuntu.com/ubuntu/ trusty/universe netcat-traditional amd64 1.10-40 [65.0 kB]
내려받기 65.0 k바이트, 소요시간 0초 (379 k바이트/초)
sjw-lenovo@sjwlenovo-Lenovo-U310:~$

==============================================================================================


-  netcat-traditional 패키지를 내려받았으므로 차례로 설치

==============================================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo dpkg -i netcat-traditional_1.10-40_amd64.deb
Selecting previously unselected package netcat-traditional.
(데이터베이스 읽는중 ...현재 206602개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack netcat-traditional_1.10-40_amd64.deb ...
Unpacking netcat-traditional (1.10-40) ...
netcat-traditional (1.10-40) 설정하는 중입니다 ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
sjw-lenovo@sjwlenovo-Lenovo-U310:~$
==============================================================================================



7) 패키지 삭제하기 : -r, -P 옵션

- dpkg 명령으로 패키지를 삭제할 때  '-r' 옵션이나 '-P' 옵션을 사용

- '-r' 옵션은 설치된 패키지만 삭제

- '-P' 옵션은 패키지와 설정 정보를 모두 삭제

==============================================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo dpkg -r netcat
(데이터베이스 읽는중 ...현재 206636개의 파일과 디렉터리가 설치되어 있습니다.)
Removing netcat (1.10-40) ...
sjw-lenovo@sjwlenovo-Lenovo-U310:~$
==============================================================================================


- '-P' 옵션으로 패키지 삭제시 패키지 삭제 외에 추가적인 작업을 처리

==============================================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo dpkg -P netcat-traditional
(데이터베이스 읽는중 ...현재 206633개의 파일과 디렉터리가 설치되어 있습니다.)
Removing netcat-traditional (1.10-40) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
sjw-lenovo@sjwlenovo-Lenovo-U310:~$

==============================================================================================


8) .deb 파일 풀기 : -x 옵션

- '-x' 옵션을 .deb 파일의 내용을 지정한 디렉터리에 풀어 놓음

==============================================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ mkdir netcat
sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo dpkg -x netcat_1.10-40_all.deb netcat
sjw-lenovo@sjwlenovo-Lenovo-U310:~$ ls -R netcat
netcat:
usr

netcat/usr:
share

netcat/usr/share:
doc

netcat/usr/share/doc:
netcat

netcat/usr/share/doc/netcat:
changelog.Debian.gz  copyright
sjw-lenovo@sjwlenovo-Lenovo-U310:~$

==============================================================================================




dpkg 명령으로 패키지 설치하기

1) 'gnome-chess' 패키지 설치 확인

=======================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ dpkg -l gnome-chess
희망상태=알수없음(U)/설치(I)/지우기(R)/깨끗이(P)/고정(H)
| 상태=아님(N)/설치(I)/설정(C)/풀림(U)/절반설정(F)/일부설치(H)/트리거대기(W)/
| /    트리거밀림(T)
|/ 오류?=(없음)/다시설치필요(R) (상태, 오류가 대문자=불량)
||/ 이름           버전         Architecture 설명
+++-==============-============-============-=================================
un  gnome-chess    <none>       <none>       (설명 없음)
sjw-lenovo@sjwlenovo-Lenovo-U310:~$

=======================================================================



2) APT 명령을 사용하여 'gnome-chess' 패키지를 내려받음

=======================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ apt-get download gnome-chess
받기:1 http://kr.archive.ubuntu.com/ubuntu/ trusty/universe gnome-chess amd64 1:3.8.3-1 [2,445 kB]
내려받기 2,445 k바이트, 소요시간 1초 (1,232 k바이트/초)
sjw-lenovo@sjwlenovo-Lenovo-U310:~$

=======================================================================



3) 'gnome-chess' 패키지를 구성하는 파일의  내용 확인

=======================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ dpkg -c gnome-chess_1%3a3.8.3-1_amd64.deb | less

drwxr-xr-x root/root         0 2013-06-30 14:15 ./
drwxr-xr-x root/root         0 2013-06-30 14:15 ./usr/
drwxr-xr-x root/root         0 2013-06-30 14:15 ./usr/games/
-rwxr-xr-x root/root    304672 2013-06-30 14:15 ./usr/games/gnome-chess
drwxr-xr-x root/root         0 2013-06-30 14:15 ./usr/share/
drwxr-xr-x root/root         0 2013-06-30 14:15 ./usr/share/applications/
-rw-r--r-- root/root       472 2013-06-30 14:15 ./usr/share/applications/glchess.desktop
drwxr-xr-x root/root         0 2013-06-30 14:15 ./usr/share/icons/
drwxr-xr-x root/root         0 2013-06-30 14:15 ./usr/share/icons/hicolor/
drwxr-xr-x root/root         0 2013-06-30 14:15 ./usr/share/icons/hicolor/24x24/
drwxr-xr-x root/root         0 2013-06-30 14:15 ./usr/share/icons/hicolor/24x24/apps/
-rw-r--r-- root/root      1027 2013-06-30 14:15 ./usr/share/icons/hicolor/24x24/apps/gnome-chess.png
drwxr-xr-x root/root         0 2013-06-30 14:15 ./usr/share/icons/hicolor/16x16/
drwxr-xr-x root/root         0 2013-06-30 14:15 ./usr/share/icons/hicolor/16x16/apps/
-rw-r--r-- root/root       568 2013-06-30 14:15 ./usr/share/icons/hicolor/16x16/apps/gnome-chess.png
drwxr-xr-x root/root         0 2013-06-30 14:15 ./usr/share/icons/hicolor/scalable/
drwxr-xr-x root/root         0 2013-06-30 14:15 ./usr/share/icons/hicolor/scalab:

...

..

.

..

...

=======================================================================



4) 'gnome-chess' 패키지 설치

=======================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ sudo dpkg -i gnome-chess_1%3a3.8.3-1_amd64.deb
Selecting previously unselected package gnome-chess.
(데이터베이스 읽는중 ...현재 206284개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack gnome-chess_1%3a3.8.3-1_amd64.deb ...
Unpacking gnome-chess (1:3.8.3-1) ...
gnome-chess (1:3.8.3-1) 설정하는 중입니다 ...
Processing triggers for mime-support (3.54ubuntu1.1) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu1) ...
Processing triggers for bamfdaemon (0.5.1+14.04.20140409-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for libglib2.0-0:amd64 (2.40.2-0ubuntu1) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
sjw-lenovo@sjwlenovo-Lenovo-U310:~$

=======================================================================



5) 4번에서 원래는 의존성이 있는 패키지가 여러 개 있어서 설치가 되지 않음

 만약 의존성이 있는 패키지로 인해 설치가 되지 않을 경우 APT 명령을 통해서 설치하면 됨.

 만약 그중에 특정 패키지를 못 찾겠다는 오류 메시지가 출력될 경우 그 패키지는 제외하고 설치





반응형