2011. 8. 5. 17:34

dpkgAPT는 오랫동안 사용되어 온 훌륭한 도구지만, 이들 도구는 여러 측면에서

미묘한 차이를 가지고 있기 때문에 제대로 사용하기 위해서는 상당한 이해가 요구된다.

aptitude 프로그램은 curses 기반의 커맨드라인 툴로 충분히 유연하면서도,

주요 패키지 작업 과정 (패키지 설치나 업그레이드 전에 apt-get update를 실행하는 것과 같은)

을 자동화하여 가능한 쉽게 작업할 수 있도록 해준다.

이러한 이유로 가능하다면 커맨드라인에서는 aptitude 명령어를 사용할 것을 권장.

 

 

▶ aptitude의 일반적 기능

aptitude 명령어

설 명

sudo aptitude

curses 인터페이스로 시작. <Ctrl + t>를 사용하면

메뉴에 접근할 수 있으며 q 키는 프로그램을 종료.

aptitude help

aptitude 명령어의 도움말을 출력.

aptitude search <keyword>

주어진 키워드와 일치하는 패키지들을 보여줌.

sudo aptitude update

APT 리포지토리들로부터 사용 가능한 패키지를 업데이트 한다.

sudo aptitude upgrade

모든 패키지를 최신 버전으로 업그레이드 한다.

aptitude show <package>

패키지의 설치여부에 관계없이 주어진 패키지에 대한 정보를 보여줌.

sudo aptitude download <package>

주어진 패키지를 설치하지 않고 다운로드만 받는다.

sudo aptitude clean

/var/cache/apt/archives 디렉토리에 다운로드된

.deb 파일들을 모두 삭제한다.

sudo aptitude autoclean

/var/cache/apt/archives 디렉토리에 있는 오래된

.deb 파일들을 모두 삭제한다. 이 작업은 디스크 공간 낭비를

방지하면서 현재 캐시를 유지할 수 있는 방법이다.

sudo aptitude install <package>

주어진 패키지를 시스템에 설치. 특정 버전을 선택하거나

와일드카드 문자를 사용하기 위한 여러 옵션이 있다.

sudo aptitude remove <package>

시스템으로부터 주어진 패키지를 삭제한다.

sudo patitude purge <package>

패키지 제거와 환경 설정 파일도 함께 삭제.

sudo aptitude dist-upgrade

모든 패키지를 가장 최신 버전으로 업그레이드 하는데,

필요한 경우 패키지를 삭제하거나 추가적으로 설치.

 

 

■ aptitude를 사용하여 패키지 관리

## 패키지 업데이트 & 업그레이드 ##

$ sudo aptitude update

…[중략]…

$ sudo aptitude upgrade

…[중략]…

 

## 패키지 검색 & 정보 질의 ##

$ aptitude search minic

p minicom - friendly menu driven serial communication program

$ aptitude show minicom

Package: minicom

State: not installed

Version: 2.5-1

…[중략]…

 

## 패키지를 설치하지 않고 다운로드만 받기 ## (해당 디렉토리에 다운로드 받은 파일 존재)

$ sudo aptitude download minicom

Get:1 http://ftp.daum.net/ubuntu/ natty/universe minicom i386 2.5-1 [285 kB]

Fetched 285 kB in 0초 (3,149 kB/s)

## 다운로드 받은 패키지 설치 ##

$ sudo aptitude install minicom

The following NEW packages will be installed:

lrzsz{a} minicom

0 packages upgraded, 2 newly installed, 0 to remove and 1 not upgraded.

Need to get 99.9 kB/385 kB of archives. After unpacking 1,470 kB will be used.

Do you want to continue? [Y/n/?] n

 

## 패키지 삭제 ##

$ sudo aptitude remove minicom

The following packages will be REMOVED:

lrzsz{u} minicom

0 packages upgraded, 0 newly installed, 2 to remove and 1 not upgraded.

Need to get 0 B of archives. After unpacking 1,470 kB will be freed.

Do you want to continue? [Y/n/?] y

(데이터베이스 읽는중 ...현재 170390개의 파일과 디렉터리가 설치되어 있습니다.)

…[중략]…

## 패키지 캐시 삭제 ## (인스톨 설치시 패키지는 /var/cache/apt/archives에 저장)

(오래된 패키지만 삭제 : sudo aptitude autoclean)

$ ls

aptitude_0.6.3-3.2ubuntu1_i386.deb                                  lock

libboost-iostreams1.42.0_1.42.0-4ubuntu2_i386.deb    lrzsz_0.12.21-5_i386.deb

libcwidget3_0.5.16-3ubuntu2_i386.deb                             minicom_2.5-1_i386.deb

libsigc++-2.0-0c2a_2.2.4.2-1ubuntu1_i386.deb               partial

$ sudo aptitude clean

$ ls

lock                  partial

 

##### 유용한 옵션 조합 #####

/* -v : 더 많은 정보 제공 (md5sum …등) */

$ aptitude show -v minicom

Package: minicom

State: not installed

…[중략]…

Filename: pool/universe/m/minicom/minicom_2.5-1_i386.deb

MD5sum: 497900daa7807ae0c968d6630219bd4b

…[중략]…

 

/* -s : 실제 동작은 수행하지 않고, 어떤 작업이 수행되는지 시뮬레이션 */

$ sudo aptitude -s install minicom

The following NEW packages will be installed:

…[중략]…

Do you want to continue? [Y/n/?] y

Would download/install/remove packages.

 

/* -y : 모든 질문에 미리 Yes답변 */ (되돌리는 기능이 없으므로 신중히 사용)

$ sudo aptitude -vs -y install minicom

The following NEW packages will be installed:

lrzsz{a} minicom

0 packages upgraded, 2 newly installed, 0 to remove and 1 not upgraded.

Need to get 385 kB of archives. After unpacking 1,470 kB will be used.

Inst lrzsz (0.12.21-5 Ubuntu:11.04/natty [i386])

Inst minicom (2.5-1 Ubuntu:11.04/natty [i386])

Conf lrzsz (0.12.21-5 Ubuntu:11.04/natty [i386])

Conf minicom (2.5-1 Ubuntu:11.04/natty [i386])

 

/* -h : 도움말 기능 (사용 가능한 옵션들을 보여줌) */

$ aptitude -h

aptitude 0.6.3

Usage: aptitude [-S fname] [-u|-i]

aptitude [options] <action> ...

…[중략]…

install - Install/upgrade packages.

remove - Remove packages.

purge - Remove packages and their configuration files.

hold - Place packages on hold.

…[중략]…

Options:

-h This help text.

--no-gui Do not use the GTK GUI even if available.

-s Simulate actions, but do not actually perform them.

-d Only download packages, do not install or remove anything.

-P Always prompt for confirmation or actions.

…[중략]…

 

▷ moo 옵션 : 이스터에그(Easter eggs) - 즐거움을 주기 위해 프로그램 속에 숨겨져 있는 기능

$ aptitude moo

There are no Easter Eggs in this program.

$ aptitude -v moo

There really are no Easter Eggs in this program.

$ aptitude -vv moo

Didn't I already tell you that there are no Easter Eggs in this program?

$ aptitude -vvv moo

Stop it!

$ aptitude -vvvv moo

Okay, okay, if I give you an Easter Egg, will you go away?

$ aptitude -vvvvv moo

All right, you win.

                                   /----\
                         -------/        \
                         
/                   \
                        
/                    |
 
-----------------/                     --------\
 
----------------------------------------------

…[중략]…

Posted by devanix
2011. 8. 5. 00:23

dpkg 유틸리티는 APT 유틸리티보다 낮은 수준에서 작업을 수행.

APT는 우분투 시스템의 Software를 관리하기 위해 내부적으로는 이 dpkg를 이용한다.

APTdpkg의 관계는 레드햇기반 리눅스 배포판에서 yumrpm의 관계와 유사.

보통은 APT 명령어가 가진 기능만으로도 충분하다. 그러나 시스템에 있는 특정 파일이 어떤

패키지에 포함되어 있는지 확인하는 등의 작업을 수행하기 위해서라면 dpkg 명령이 필요.

 

▶ dpkg 유틸리티의 일반적 사용

dpkg 명령어

설 명

dpkg -c <.deb file>

주어진 .deb 파일이 설치한 파일 목록을 보여줌.

(.deb 파일은 '경로/파일명' 형태로 주어져야 함)

dpkg -I <.deb file>

주어진 .deb 파일에 대한 정보를 보여줌.

dpkg -p <package>

패키지에 대한 정보를 보여줌.

dpkg -S <filename>

주어진 파일명 또는 경로가 포함된 패키지들을 검색.

dpkg -l

설치된 패키지 목록을 보여줌.

이 명령은 좀 더 세부적인 정보를 위해 옵션들을 취할 수 있음.

dpkg -L <package>

주어진 패키지로부터 설치된 모든 파일목록을 보여줌.

(물론 패키지가 먼저 설치되어 있어야만 함)

dpkg -s <package>

주어진 패키지의 상태를 보여줌.

sudo dpkg -i <.deb file>

주어진 .deb 파일을 설치.

sudo dpkg -r <package>

시스템으로부터 주어진 패키지를 삭제.

그러나 파일들은 남겨둔다.

sudo dpkg -P <package>

주어진 패키지와 해당 패키지의 설정파일을 삭제.

sudo dpkg -x <.deb file> <directory>

.deb 파일에 포함되어 있는 파일들을 지정된 디렉토리에 풀어 놓음.

(이 명령은 지정된 디렉토리의 퍼미션을 초기화하므로 주의)

sudo dpkg -e <.debfile> <directory>

.deb 파일 내부의 제어스크립트를 지정된 목표 디렉토리에 추출.

 

 

■ dpkg를 사용하여 패키지 설치 & 삭제

apt-get 명령어가 저장소(Repository)에서 패키지를 찾거나 다운로드하는 등의 세부사항을 다루는데 반해

dpkg 명령어는 패키지 그 자체에 집중한다.

 

▷ 실습 준비를 위해 .deb 파일 다운로드.

# apt-get명령에 -d 옵션을 사용하면 다운로드만 받는다. #

$ sudo apt-get -d install minicom

# /var/cache/apt/archives 디렉토리에 .deb 파일을 다운로드 받음. #

$ ls -l /var/cache/apt/archives

lock lrzsz_0.12.21-5_i386.deb minicom_2.5-1_i386.deb

 

▷ 패키지 설치 & 삭제

## 패키지 설치 ##

$ sudo dpkg -i /var/cache/apt/archives/minicom_2.5-1_i386.deb

Selecting previously deselected package minicom.

…[중략]…

 

## 패키지 삭제 ##

$ sudo dpkg -r minicom

(데이터베이스 읽는중 ...현재 170237개의 파일과 디렉터리가 설치되어 있습니다.)

minicom 패키지를 지우는 중입니다 ...

## 패키지 설정파일 까지 삭제 ##

$ sudo dpkg -P minicom

(데이터베이스 읽는중 ...현재 170237개의 파일과 디렉터리가 설치되어 있습니다.)

minicom 패키지를 지우는 중입니다 ...

minicom의 설정 파일을 깨끗이 지우는 중입니다 ...

Cannot remove /etc/minicom, please do it manually.

man-db에 대한 트리거를 처리하는 중입니다 ...

 

■ dpkg를 사용하여 .deb 파일 풀기

우분투 패키지는 .deb라는 단일 파일로 묶여 있다.

.deb 파일은 그 내부에 빌드된 명령어, 관련 파일, 문서, 그리고 소스코드 등 하나 이상의 파일들을 포함.

기본적으로 .deb 파일은 컴퓨터에 설치하길 원하는 파일들로 묶인 아카이브로,

소프트웨어를 식별하기 위한 헤더정보와 제어정보(설명, 체크섬, 빌드정보 등) 등을 포함하고 있다.

$ sudo dpkg -x minicom_2.5-1_i386.deb /tmp/minicom/contents

$ ls /tmp/minicom_contents/

etc usr

 

■ .deb 패키지 정보 질의

## 패키지 정보 확인 ##

$ dpkg -p minicom

Package: minicom

Priority: optional

Section: comm

Installed-Size: 1164

Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>

Architecture: i386

Version: 2.5-1

…[중략]…

 

## 현재 디렉토리에 있는 .deb 파일 정보 ##

$ dpkg -I minicom_2.5-1_i386.deb

new debian package, version 2.0.

size 285352 bytes: control archive= 3144 bytes.

520 bytes, 13 lines control

4669 bytes, 65 lines md5sums

412 bytes, 20 lines * postinst #!/bin/sh

365 bytes, 20 lines * postrm #!/bin/sh

900 bytes, 39 lines * preinst #!/bin/sh

Package: minicom

…[중략]…

 

## 시스템에 설치되어 있는 모든 패키지 목록 (한 화면씩) 확인 ##

$ dpkg -l | less

…[중략]…

ii abiword-plugin-grammar 2.8.6-0.3build1 grammar checking plugin for AbiWord

ii abiword-plugin-mathview 2.8.6-0.3build1 equation editor plugin for AbiWord

…[중략]…

 

## 시스템에 있는 파일이 어떤 패키지에 포함되어 있는지 확인 ##

$ dpkg -S /usr/bin/rsync

rsync: /usr/bin/rsync

$ dpkg -S /sbin/ifconfig

net-tools: /sbin/ifconfig

 

## 설치된 패키지에 상태 정보 ##

$ dpkg -s rsync

Package: rsync

Status: install ok installed

Priority: optional

Section: net

Installed-Size: 676

Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>

…[중략]…

 

## 로컬 디렉토리에 있는 .deb 파일 내용 ##

$ dpkg -c minicom_2.5-1_i386.deb

drwxr-xr-x root/root 0 2011-02-05 15:31 ./

drwxr-xr-x root/root 0 2011-02-05 15:31 ./usr/

drwxr-xr-x root/root 0 2011-02-05 15:31 ./usr/share/

drwxr-xr-x root/root 0 2011-02-05 15:31 ./usr/share/man/

drwxr-xr-x root/root 0 2011-02-05 15:31 ./usr/share/man/man1/

…[중략]…

 

## 패키지가 시스템에 설치한 파일 목록 ##

$ dpkg -L minicom

/.

/usr

/usr/share

/usr/share/man

…[중략]…

Posted by devanix