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. 4. 06:15

♧ 우분투는 데비안 기반 시스템의 표준 패키징 방식인 데비안 패키지 포맷(실제로는 ar 아카이브 파일)을 사용.

소프트웨어는 하나 이상의 데비안 패키지(.deb 확장자) 컴포넌트로 분리될 수 있는데,

여기에는 소프트웨어 파일만 저장되어 있는 것이 아니라 패키지에 대한 많은 정보를 포함 시킬 수 있다.

이러한 메타데이터는 소프트웨어의 의존성, 컴퓨터 아키텍처, 벤더, 크기, 라이센스, 설명문 등 다양한 정보를 포함.

 

우분투 시스템을 설치한 후, 시스템의 사용목적에 따라 필요한 .deb 파일을 추가, 삭제, 관리할 수 있다.

우분투를 비롯한 그밖의 데비안 기반 시스템에서는 대부분 소프트웨어 설치를 위해 .deb 파일을 사용.

aptitude 툴은 그때 그때 필요한 소프트웨어를 다루는 데 아주 유용.

그러나 패키지 관리를 위해 매우 다양한 툴이 개발되어 있고 일부는 함께 사용되는 경우도 있다.

 

▶ 패키지 관리 툴

APT

온라인 리포지토리에서 패키지를 다운로드 받고 설치하는 데 사용되는 프로그램.

APT 명령어(apt-get, apt-cache 등)들은 로컬에서 패키지를 설치하는 데 사용할 수도 있지만,

정상적인 사용을 위해서는 온라인 환경에서 사용해야 함.

dpkg 

CD-ROM이나 다른 디스크 저장장치에 있는 .deb 파일을 제어하는 경우 사용.

시스템 소프트웨어에 대한 설정, 설치, 그리고 정보 획득을 위한 옵션들을 가짐.

aptitude 

커맨드라인 명령어로 온라인 리포지토리와의 작업을 위해 사용.

aptitude 도구는 APT나 dpkg를 사용할 경우 사용자가 직접 해주어야 하는 번거로운

작업들을 자동화해주기 때문에 사용자의 첫 번째 패키지툴로써 추천된다.

시냅틱 패키지 관리자(Synaptic Package Manager):

데비안 패키지 관리 시스템인 APT(Advanced Packaging Tool)의 그래픽 유저 인터페이스(GUI) 프론트엔드 프로그램.

일반적으로 deb 패키지를 기반으로 한 시스템에서 이용하지만, RPM을 베이스로 한 시스템에서도 이용할 수 있다.

소프트웨어 패키지의 설치, 삭제 그리고 업그레이드 및 소프트웨어 저장소(software repository)를 추가할 수 있다.

▷ APT 하우투 문서 : http://www.debian.org/doc/manuals/apt-howto

▷ 다른 리눅스 배포판들도 APT와 비슷한 패키징 시스템을 사용.

- 레드햇 기반의 배포판들의 경우 : yum, rpm, urpmi, smart와 같은 소프트웨어 관리 툴을 사용.

 

▶ 우분투(Ubuntu)에서 소프트웨어의 종류.

▷ 사용가능한 전체 패키지 수:

$ apt-cache stats

전체 패키지 이름 : 42450 (849 k)

전체 패키지 구조: 42450 (2,038 k)

일반 패키지: 32601

…[중략]…

앞에서 볼 수 있듯이 우분투에서는 기본적으로 수만 가지가 넘는 소프트웨어 패키지를 사용할 수 있다.

데비안 커뮤니티에서는 이들 패키지에 재배포 가능한 소프트웨어만 포함될 수 있도록 지속적으로 노력하고 있다.

 

비록 데비안이 자유 소프트웨어를 신뢰하고 있지만, 사람들이 자신의 컴퓨터에

독점 소프트웨어를 설치해야 하는 경우도 있다. 따라서 데비안에서는 독점 소프트웨어가

주요 배포판에 포함되지는 않더라도 가능한 한 언제든지 이들을 지원할 것이다.

이러한 소프트웨어는 보통 FTP 사이트의 non-free 디렉토리에서 사용할 수 있다.

우리가 직접 배포할 수는 없기 때문에 개인이 직접 설치하는 독점 소프트웨어의 수가 증가하고 있다.

 

이와 유사하게 Canonical사에서도 우분투 소프트웨어를 다음과 같이 네 개의 카테고리로 나누어 제공.

(http://www.ubuntu.com/community/ubuntustory/licensing)

main

우분투 팀에 의해 지원되며 자유롭게 배포할 수 있는 소프트웨어가 포함.

우분투가 설치될 때 이들 소프트웨어 중 상당수가 설치.

restricted

완전한 자유 라이선스 소프트웨어는 아니지만, 우분투팀에 의해 지원되며

많은 리눅스 시스템에서 일반적으로 사용되고 있는 소프트웨어가 포함

universe

리눅스 세계에서 사용할 수 있는 거의 대부분의 오픈소스 소프트웨어를 포함.

universe 카테고리의 소프트웨어는 자유 라이선스일 수도 있고 아닐 수도 있으며

보안에 대한 수정이나 자원을 보장받을 수는 없다.

multiverse 

우분투의 핵심 라이선스 정책에 준하는 자유 소프트웨어가 아닌 소프트웨어를 포함.

이 카테고리의 소프트웨어는 어떠한 지원도 받지 못하며 라이선스의 적법성도

개인이 스스로 확인해야 한다.

▷ 서버와 같이 안정적인 서비스가 중시되는 시스템인 경우 가급적 universe, multiverse 카테고리 사용을 피한다.

 

 

[ 로케일 에러 메시지 다루기 ]

만약 우분투(Feisty Fawn)의 커맨드라인 환경에서 패키지 설치 작업을 수행하고 있다면,

다음과 유사한 로케일 에러 메시지를 접하게 될 것이다.

perl: warning: Setting locale failed.

perl: warning: Please check that your locale settings:

locale: Cannot set LC_CTYPE to default locale: No such file or directory 

 

이러한 에러는 일반적으로 설치된 언어 설정과 관련된 문제이거나

국제화된 인코딩에 관련된 문제인 경우가 많다. 이 문제에 대한 한 가지 만족할 만한 해결 방법은

LC_ALL 환경변수의 값을 LANG 변수의 값과 동일하게 설정하는 것.

$ export LC_ALL="$LANG"

~/.bashrc 파일에 해당 명령을 입력하면 local 또는 ssh 쉘이 실행될 때마다 자동 실행.

Posted by devanix