반응형
데비안은 어떤 리눅스 배포본보다도 강력하고도 유용한 패키지 관리 시스템을
갖고 있다. 처음에는 이해하기 힘들지만 사용하기 시작하면 매우 사용하기 편한
도구라는 것을 금방 알 수 있을 것이다. 이번 호에는 dpkg을 사용, 데비안 기반의
시스템 관리법에 대해 살펴본다.

apt-get -d install 패키지명  : 다운로드만 받는다.
 
글 | David Blackman 역 | 양유성 리눅스 한글문서 프로젝트(yooseong@kldp.org)
---

데비안은 기본적인 패키지 도구는 dpkg로 dpkg-deb 상에서 동작한다. 모든 데비안
패키지는 '.deb'라는 확장자를 갖는데(기사에서는 'deb'로 표기하겠다) 일반적으로는
다음과 같이 표현된다.

zsh_3.1.6.pw21-1.deb

여기에 나오는 예제들의 'foobar.deb'는 패키지 이름이 foobar라는 것을 의미한다.
특히도 레드헷 패키지 관리(RPM)에 친숙한 사람들은 패키지 관리에 대한 dpkg의
접근 방법이 많이 다르다는 것을 느낄 것이다. RPM은 파일 기반의 패기지 관리
도구로 이는 libgtk-1.2.so.0 등과 같은 패키지에 의해 요구된는 특정 파일을
확인한다. 반대로 dpkg는 패키지 기반으로 특정 패키지, 예를 들어 libgtk1.2를
갖고 있는지를 확인한다.


데비안의 기본 Dpkg

대부분의 사용자들은 패키지 관리자로 dpkg를 사용하지 않고 있지만 사실 이것은
굉장히 강력하고 유용한 도구이다. dpkg의 기본 작용은 'dpkg -i foobar.deb'와
같이 패키지를 설치하고 기존의 패키지를 보존하는 역할을 한다. 'dpkg -i -R
/foo/bar'를 실행하면 디렉토리에 있는 데비안 패키지를 설치해 준다. 때로
적절하게 패키지가 설치가 되지 않거나 설정이 안되는 경우가 있을 것이다. 또는
사용자가 설정 과정을 받아들이지 않은 경우 역시 발생할 수 있는데 dpkg에는
이런 설정 과정을 간편하게 해주는 몇 개의 유용한 도구들이 있다. 대부분
'dpkg --configure <package>'를 실행하면 원하는 패키지의 설정을 끝마치고,
'dpkg --configure --pending'은 설정을 가다리는 모든 패키지의 설정을 처리해준다.

또한 몇 가지 간단한 명령을 통해 패키지를 삭제해주는데 'dpkg -r <package>' 또는
'dpkg --remove <package>'는 패키지를 삭제하고 설정 파일은 남겨둔다. 만일
패키지와 관련된 모든 파일들을 삭제하고 싶은 경우 'dpkg --purge <package>' 명령을
이용하면 된다.


정보 얻기

데비안 패키지 관리는 현재 어떤 패키지들이 설치되어 있는지 그리고 각각의 패키지가
제공하는 파일들이 어떤 것인지에 관한 몇 가지 방법들을 제공한다. 패턴을 이용해
패키지를 정렬하려면 'dpkg -l<pattern>'을 이용하면 된다. 'dpkg -l'은 시스템에
설치되어 있는 모든 패키지를 보여준다.

데비안 패키지 관리를 이용하면 'dpkg -L <package>'를 사용하여 특정 패키지에 의해
설치된 파일들을 볼 수 있다. 다른 방법으로는 패키지가 어떤 파일을 소유하고
있는지 알아보려면 'dpkg -S <file>'을 입력하면 나타나게 된다. 이러한 찾기는
와일드 카드를 포함한 패턴을 이용해서 할 수 있다. 특정한 데비안 패키지에 관한
정보가 필요하다면 다음의 명령어 목록이 도움이 될 것이다.

* dpkg -l foobar.deb : 패키지에 관한 자세한 정보를 보여준다.
* dpkg -c foobar.deb : tar의 -c 옵션처럼 패키지의 내용에 관한 정보를 보여준다.
* dpkg -x foobar.deb <dir> : 특정디렉토리에서 패키지를 끄집어 낸다.
* dpkg -X foobar.deb <dir> : tar의 -v 옵션처럼 끄집어낸 패키지를 보여준다.


강제옵션

패키지 관리를 위해 dpkg가 접근할 수 있는 유용한 정보 위에 패키지 관리 시스템을
뒤섞이게 만들 수 있는 옵션들이 존재한다. dpkg의 맨 페이지를 살펴보면 "경고:
이 옵션들은 전문가만 사용하는 것이 좋다"라는 메시지를 만나게 된다. 이 옵션을
정확히 이해하지 않고 사용한다면 시스템을 망쳐놓을 수 있다.


APT

APT는 'Advanced Package Tool'의 약자로 데비안 사용자가 좀더 편하게 패키지 관리를
할 수 있도록 만든 도구이다. 방금 전 겁을 주었지만 절대 두려워할 필요는 없다.
APT는 패키지 관리의 대부분에서 사용하는 도구로 데비안 패키지 관리에 매우 중요한
도구다.


source.list

사용법을 한번 알고 나면 /etc/apt/source.list는 사용자의 시스템에서 가장 중요한
부분이 될 것이다. 대부분의 경우 source.list는 ftp와 http 주소로 이루어져 있으며
APT가 정보를 가지고 올 수 있는 곳을 가리킨다. 전형적인 리스트는 다음과 같다.

deb http://http.us.debian.org/debian unstable main contrib non-free

첫 번째 부분은 바이너리 파일들을 가지고 올 수 있는 부분을 지칭하는 deb나 데비안
소스 패키지들을 얻을 수 있는 곳을 지칭하는 deb-src 부분이다. 그 다음은 URI로
URL과 비슷한 것으로 이는 데비안 디렉토리의 루트를 의미한다. 일반적으로 'stable'
, 'frozen' 또는 'unstable'과 같은 목록을 보이는 부분이, 그 다음은 특정한 배포본
이름인 Hamm이나 Slink, 도는 Potato와 같은 이름이 쓰일 수도 있다. 배포본은
정확한 경로명이 주어질 수 있는데 이런 경우 반드시 '/'로 끝내야 하고 그 다음에는
어떠한 내용도 들어올 수 없다. 그 내용들은 'main', 'contrib', 'non-free',
'non-us/main', 'non-us/contrib' 혹은 'non-us/non-Free'을 의미한다. 이것이
source.list의 정보를 십분 활용하는 것이다. CD 롬 내용은 apt-cdrom에 의해
만들어지는데 손으로 굳이 적을 필요가 없다.

sources.list 파일을 편집하는 것은 APT가 사용할 사이트를 변경하거나 APT가
패키지를 가지고 올 배포본 변경, 또는 'unofficial' 패키지들을 받기 위한 URI를
추가하는데 사용한다. 또한 KDE와 HelixCode와 같은 새로운 패키지를 받을 곳을
추가할 수 있다. 이 파일을 추가한 후, apt-get update를 이용해서 패키지를 업데이트
할 수 있다. 데비안 미러사이트에 관한 정보는 http://www.debian.org/에서 구할
수 있다.


apt-cdrom

데비안 CD 롬을 APT 데이타베이스에 추가하는 방법은 apt-cdrom을 이용하면 손쉽게
할 수 있다. apt-cdrom 추가는 자동적으로 시디롬을 마운트 시킨 후(물론 /dev/cdrom
이 정확히 링크되어 있을 경우) CD롬을 확인하고 /etc/apt/sources.list의 내용을
추가한다.

리눅스에 관계된 것인 경우라면 이 방법이 유일한 방법은 아니다. 만일 데비안 CD롬이
마운트되었다면(마운트 지점은 /etc/fstab의 파일에서 알 수 있다) 이러한 작업을
수행할 몇 개의 플랙이 있다. -d <mount point>을 이용해서 마운트 지점을 정하고
-f를 이용, apt-cdrom이 각각의 패키지를 확인할 수 있게 하지 않으며, -a는 CD롬에
있는 패키지 파일들을 찾을 수 있는 패키지 스캔을 위해 사용된다.


apt-get

데비안의 가장 큰 특징 중의 하나는 apt-get인데 이는 굉장히 쉽고 똑똑한 패키지
도구로 자동적으로 패키지 의존성과 충돌성을 확인하고 처리한다. 사용중 해야
할 첫 번째 일은(물론 /etc/apt/sources.list를 편집하고) apt-get 업데이트를 실행
하는 것이며 여기에서부터 apt-cache와 apt-get에 의해 사용되는 패키지 정보를
가지고 온다.

이로서 패키지를 설치할 수 있데 되었다. APT에서 가장 많이 사용되는 것은 설치
(install)다. 새로운 패키지를 설치하고 거기에 따른 의존성을 자동적으로
충족시키려면 apt-get install <package>를 이용한다. 만약 반드시 설치해야할
패키지가 있다면 APT는 다운로드 하기 전 이를 알려줄 것이다.

요구되는 사항을 고려하지 않고 패키지를 설치하거나, 설치 또는 삭제시에 문제가
발생하여 문제가 풀릴 때까지 dpkg를 이용할 수 없는 경우가 있다. 이러한 경우
해결책은 apt-get -f install이다.

APT는 apt-get source <package>를 이용하여 소스를 가지고 올 수 있다. 물론 이는
/etc/apt/sources.list 내용에 deb-src의 내용을 추가해야 한다. 패키지를 삭제하려
한다면, 'apt-get remove <package>'를 실행한다. 아카이브를 모두 삭제하는 데는
두 가지 옵션이 있다. 모든 아카이브를 삭제하려면 apt-get clean을 이용하면 된다.
만약 오래된 아카이브를 삭제하려면 apt-get autoclean을 대신 사용하면 된다. 최신
버전으로 모든 패키지를 업그레이드 하고자 할 때는 'apt-get upgrade' 명령을 이용
하여 모든 것을 처리할 수 있다. 다른 방법으로, apt-get dist-upgrade를 이용하면
새로운 데비안 패키지로 업그레이드하는데 적합하고 자동적으로 패키지 이름이
변경될 때 의존성들을 다시 한번 설정해준다.

apt-get을 이용 '-d' 옵션을 사용하면 아카이브를 단지 다운 받기만 할뿐 패키지를
설치하거나 풀지 않는다. '-s'는 실제적으로 아무것도 실행하지 않는 시뮬레이션을
위한 것이다. 'y'는 모든 질문에 관해 '예'라고 대답하는 것이고 '-b'는 다운받은
후 소스패키지를 빌드하는데 사용된다.

추가로, apt-get은 'apt-get install '.*mame.*'' 이나 'atp-get remove 'mozill.''
과 같은 정규식을 이용할 수 있다. apt-get은 문자열에 들어있는 특정 지점에 나타나
있는 요소들을 맞추려고 할 것이다. 예를들어, 'gnome-pilot'이 아니라
'pilot-manager'와 같은 시작 부분의 'pilot'에 해당하는 부분을 찾으려면 '^'
(행의 시작을 의미)을 이용하여 apt-get install '^pilot'을 하면 된다.


업그레이드

데비안 만큼이나 새로운 버전으로 업그레이드가 쉬운 배포본도 없다. 앞서 언급한
것 처럼 자신의 시스템을 업그레이드하고자 한다면 단지 /etc/apt/sources.list에
있는 URI를 변경하여 'apt-get dist-upgrade'를 실행하면된다. 'apt-get
dist-upgrade'를 몇 번 수행하면 모든게 자동적으로 쉽게 설치하고 설정된다.
stable에서 frozen으로 업그레이드 하거나 stable에서 unstable로, frozen에서
unstable로 옮겨갈 수 있다. 다운그레이드는 불가능하다.


apt-cache

apt-cache는 패키지에 관한 정보를 찾을 때 매우 유용한 도구로 설치하지 않은
패키지에 관한 내용을 보여준다. 'apt-cache show <package>' 명령은 의존성과
이름 그리고 설명 패키지가 풀린 경우의 크기를 포함하여 다양한 정보를 보여준다.
apt-cache depends <package>는 선택된 패키지가 제대로 설치되어 작동하는지에
관한 내용을 보여준다. 모든 유용한 패키지에 관한 완전한 목록을 보기 위해서는
apt-cache pakgnames를 이용한다.

apt-cache search <string>은 <string>은 apt-cache에서 가장 유용한 것으로 이
옵션은 모든 패키지 이름과 문자열에 대한 내용을 참조하여 관련된 패키지를 모두
보여준다. 시간을 절약하는데 매우 중요한 도구다. 패키지에 관련 apt-cache가
사용할 수 있는 여러 가지 옵션들이 있다. 예를 들어 -i는 중요한 의존성을, -f는
찾기 후에 모든 기록을 남겨두는 것이고, -names-only는 패키지 이름만을 보여준다.

대개는 dpkg를 이용해서 패키지 관리를 하는데 apt-cache는 패키지를 탐색에,
apt-get은 설치하는데 이용한다. 때때로 dselect와 console-apt, gnome-apt를
사용하여 무엇이 유용한지에 관한 정보를 얻는다.


dselect

dselect는 가장 오래된 도구로 설치 과정의 처음으로 새로운 데비안 사용자가
가장 먼저 겪게 되는 것이다. dselect는 매우 심하게 압축되데다 처음 사용자에게는
사용이 매우 어렵게 느껴진다. 이 부분은 dselect에 관한 짧지만 쉬운 입문 파트가
될 것이다. 첫 번째 충고는 dselect가 보여주는 화면상의 내용을 주의깊게 읽으라는
것이다. 사용자에게 편하게 만들어지지는 않았지만 그 안에는 사용하면서 알아야할
내용을 모두 포함하고 있다.

dselect를 처음 시작하면 '[A]ccess'가 나오는데 이는 설치할 때 사용할 방법을
선택하는 것이다. 지역 nfs 데비안 미러가 있는 경우 'nfs'를 선택하고 지역 주소에
대해 sources.list를 설정한다. 인터넷(http/ftp)를 통해 설치하고자 한다면 'apt'를
선택하면 된다. CD를 이용한 방법이 있다면 다중 시디롬을 선택하거나 플로피나
마운트된 형태를 이용하면 된다.

접근 방법을 선택하고 난 후에 dselect는 패키지를 찾을 필요가 있는데 '[U]pdate'를
선택하고 몇 분정도를 기다린다.

'[S]elect'는 실제 패키지 관리 작업이 시작되는 부분이다. 먼저 도움말 화면이
보이는데 이것을 반드시 일기 바란다. 다 읽고나면 스페이스 바를 눌러서 도움말
화면에서 나가거나 '.'을 이용 키바인딩을 살펴본다. 여러 가지 키를 이용해서
패키지를 찾고 위아래로 움직여서 패키지를 선별할 수 있다. 다음은 dselect의
기본적인 키 바인딩으로 매우 유용하다.

-------------------------------------------------
/ 찾고자 할 때
-------------------------------------------------
찾은 것을 반복해서 찾을 때
-------------------------------------------------
? 도움말이 필요할 때
-------------------------------------------------
d 아래에 있는 패키지 정보를 살펴볼 때
-------------------------------------------------
u 위에 있는 패키지 정보를 살펴볼 때
-------------------------------------------------

패키지를 하이라이팅하고 난 후에 다음을 이용할 수 있다.

-------------------------------------------------
+ 설치 및 업그레이드
-------------------------------------------------
- 삭제
-------------------------------------------------
+ 현재 상태유지
-------------------------------------------------

선택된 화면에서 빠져나가고자 하는 경우 다음을 선택한다.

-------------------------------------------------
[enter] 확정짓고 나가서 의존성을 확인한다
-------------------------------------------------
Q 확정짓고 의존성을 덮어버리고 나간다
-------------------------------------------------
X, Esc 모든 변화를 허용하지 않는다
-------------------------------------------------

엔터키를 누른 후 패키지의 목록을 볼 수 있는데 자신이 선택한 패키지의 의존성과
충돌성 여부를 보여줄 것이다. 패키지를 살펴보면 화면의 하단부에 문제가 무엇인지
알려줄 것이다. 문제를 해결한 후에 엔터키를 누른다.

이제 선택한 패키지들을 설치해야 하는데 '[S]elect' 화면에서 빠져나와 '[I]nstall'
이나 '[R]emove'를 선택하면 시스템은 그에 맞게 변경될 것이다.


Gnome-apt

Gnome-apt는 Gnome에서 개발된 데비안을 위한 GUI 패키지 관리자다. 믿기지 않을
정도로 직관적이며 매우 유용할 것이다. Gnome-apt는 패키지의 크기와 의존성과
그에 따른 유용한 정보를 보여준다. 그림 2처럼 정렬된 트리에서 패키지를 보여주고
글자가 깨진 패키지를 보여주며 섹션이나 상태, 우선 순위를 보여주는 등 매우 쉽고
강력한 찾기 기능을 보인다. Gnome-apt는 데비안 2.2(Potato)와 현재의 개발 버전인
우디(Woody)에 포함되어 있다.


Kpackage

Kpackage는 KDE용으로 만들어진 패키지 관리시스템으로 RPM과 Deb 양쪽에서 사용할
수 있다. 이는 탭과 트리 인터페이스(그림3)의 혼합으로 이루어져 있다. 가장
큰 특징중의 하나는 패키지의 의존성을 하이퍼링크 해두었다는 것이다. Kpackage는
각각에 설치된 아카이브에 포함된 파일을 보여주고 이것들이 실제 존재하는지
보여준다. 이에 관한 내용은 http://www.general.uwa.edu.au/u/tovio/kpackage/에서
찾아볼 수 있다.


console-apt

console-apt는 APT의 새로운 방법으로 현재로서는 데비안의 개발버전인 우디에서만
사용할 수 있고 여전히 개발중이며 몇 가지의 주목할 만한 특징들을 갖고 있다.
첫째로 직관적이며 유용한 인터페이스에 다운로드용 작업 지시자, 둘째로 선별
업그레이드와 찾기 기능, 셋째로 패키지 목록을 정렬하고 뽑아내는 특징 등이다.


결론

이러한 옵션들과 특징 등을 적절히 이용하면 쉽게 데비안의 패키지 시스템을 관리할
수 있다. 실행하지 않고 기사에서 내용을 읽다보면 실제보다 복잡하게 느껴질지
모르겠다. 데비안을 사용하며 내린 결론은 아직까지 APT 수준의 RPM 도구는 보지
못했다는 것이다.

---
(출처:Linux@Work 2001년 1월호 기사입니다)

반응형

'Linux > Linux 명령어' 카테고리의 다른 글

RPM 사용법  (0) 2007.08.02
리눅스 kill사용법  (0) 2007.05.29
Linux 간단한 명령어 모음  (0) 2007.03.13
Posted by Real_G