차례
그래픽 또는 텍스트 기반 인터페이스부터 패키지 설치에 사용되는 저수준 도구에 이르기까지 데비안 패키지를 관리하는데 사용되는 여러 도구가 있습니다. 사용 가능한 모든 도구는 더 낮은 수준 도구에 의존하여 올바르게 동작하며, 여기에 복잡도를 낮추어 표시합니다.
aptitude 또는 synaptic 같은 높은 수준 패키지 관리 도구는 그 자체가 시스템에서 패키지를 관리하려면 dpkg에 의존한다는 것을 이해하는 것이 중요합니다.
데비안 패키지 관리 유틸리티에 대한 자세한 내용을 보려면 데비안 참조의 제2장. 데비안 패키지 관리를 참조하십시오. 이 문서는 다양한 언어와 형식으로 제공됩니다. DDP 사용자 매뉴얼 안의 데비안 참조를 보십시오.
이것은 주요 패키지 관리 프로그램입니다. dpkg를 여러 옵션으로 호출할 수 있습니다. 공통 용도:
모든 옵션 찾기: dpkg --help.
지정된 패키지에 대한 제어 파일(및 기타 정보)을 출력: dpkg --info
foo_VVV-RRR.deb.
하드 디스크 파일 시스템에 패키지(패키지 풀기 및 구성 포함)를 설치: dpkg --install
foo_VVV-RRR.deb.
하드 디스크의 파일 시스템에 데비안 아카이브의 압축을 풉니다(configure 안 함): dpkg --unpack
foo_VVV-RRR.deb. 이 명령이 반드시 패키지를 사용 가능한 상태로 남겨두는 것은
아닙니다: 일부 파일은 제대로 실행하려면 추가 사용자 지정이 필요할 수 있습니다. 이 명령은
프로그램의 이미 설치된 모든 버전을 제거하고 패키지와 관련된 preinst( 7.6절. “데비안 preinst, postinst, prerm, 그리고 postrm script 는 무엇인가요?”
참조) 스크립트를 실행합니다.
이미 푼 패키지를 구성: dpkg --configure foo. 무엇보다 이 액션은 패키지 관련된
postinst (7.6절. “데비안 preinst, postinst, prerm, 그리고 postrm script 는 무엇인가요?” 참조)를 실행합니다. 이 패키지를 위해
conffiles 에 나열된 파일을 업데이트합니다. 주의하십시오. 'configure' 연산은 그
패키지 이름 (예시, foo)을 받습니다, 데비안 아카이브 파일 이름(예시, foo_VVV-RRR.deb)
아님.
데비안 아카이브에서 단일 파일 "blurf"(또는 "blurf*" 파일 그룹)을 추출: dpkg
--fsys-tarfile foo_VVV-RRR.deb | tar -xf - 'blurf*'.
패키지 제거 (설정 파일은 아님): dpkg --remove foo.
패키지 제거 (설정 파일 포함): dpkg --purge foo.
문자열(또는 정규식) "foo*"가 들어간 패키지의 설치 상태를 나열: dpkg --list
'foo*'.
APT는 Advanced Package Tool, apt-get
프로그램을 제공하는 데비안 패키지 시스템에 대한 개선된 인터페이스입니다. 패키지 검색 및 관리, 패키지에 대한 정보 쿼리,
libapt-pkg 라이브러리의 모든 기능에 대한 저수준 액세스를 위한 명령줄 도구를 제공합니다. 자세한 내용은
/usr/share/doc/apt-doc/guide.html/index.html 에 있는 사용자
가이드를 보십시오.(apt-doc 패키지를 설치해야 될 겁니다)
데비안 Jessie를 시작으로 자주 사용되는 일부 apt-get 및 apt-cache 명령은 새로운 apt 바이너리를 통해 동등한 명령을 제공합니다. 즉, apt-get update, apt-get install, apt-get remove, apt-cache search, 또는 apt-cache show 같은 일부 인기 있는 명령도 apt, 즉 apt update, apt install, apt remove, apt search, 또는 apt show를 통해 간단히 호출할 수 있습니다. 다음은 이전 명령과 새 명령에 대한 개요입니다:
apt-get update -> apt update apt-get upgrade -> apt upgrade apt-get dist-upgrade -> apt full-upgrade apt-get install package -> apt install package apt-get remove package -> apt remove package apt-get autoremove -> apt autoremove apt-cache search string -> apt search string apt-cache policy package -> apt list -a package apt-cache show package -> apt show package apt-cache showpkg package -> apt show -a package
apt 도구는 apt-get 및 apt-cache의 기능을 병합하며 기본적으로 더 화려한 색상의 출력 형식을 가지고 있어 더 쾌적합니다. 스크립트 또는 고급 사용 사례에서는 apt-get이 여전히 바람직하거나 필요합니다.
apt-get은 여러 소스에서 명령줄을 사용하여 패키지를 검색하고 설치하는 단순한 방법을
제공합니다. dpkg와는 달리, apt-get은 .deb 파일을
모르며, 패키지 이름과 함께 동작하며 /etc/apt/sources.list 에서 온 .deb
아카이브만 설치 가능합니다. apt-get은 .deb 아카이브[5]를 configure 된 소스에서 다운로드 후 dpkg를
부릅니다.
apt-get 사용하는 일반적 방법 몇 가지:
시스템에 알려진 패키지 목록을 업데이트하려면, 실행하기:
apt update
(패키지 목록을 업데이트하려면 이 작업을 정기적으로 실행해야 함)
foo 패키지와 그 종속을 설치하려면, 실행하기:
apt install foo
시스템에서 온 foo 패키지를 제거하려면, 실행하기:
apt remove foo
패키지 foo와 시스템에서 온 그 설정 파일을 제거하려면, 실행하기:
apt purge foo
새 버전이 가능한 패키지 나열하고 실행하기:
apt list --upgradable
시스템에 있는 모든 패키지 업그레이드(추가 패키지 설치 또는 패키지 제거 없이)하려면, 실행하기:
apt upgrade
시스템에 있는 모든 패키지 업그레이드, 패키지 업데이트 필요하면, 추가 패키지 설치 또는 패키지 제거 하려면 실행하기:
apt full-upgrade
(upgrade 명령은 업그레이드 시 새로운 의존성을 충족하기 위해 추가 패키지 설치가 필요한 경우,
해당 패키지를 업그레이드하지 않고 이미 설치된 구버전 상태로 유지합니다. 반면 full-upgrade
명령어는 이보다 덜 보수적으로 동작하여 필요한 패키지를 적극적으로 설치합니다.)
패키지를 변경하는 명령을 실행하려면 반드시 root 로 로그인하십시오.
apt-get은 이제 추천 패키지도 기본적으로 설치하며, 프로그램의 견고함 덕분에 콘솔 환경에서 시스템 설치 및 주요 시스템 업그레이드를 수행할 때 가장 선호되는 패키지 관리 프로그램입니다.
apt 도구 모음에는 패키지 목록을 조회하기 위한 apt-cache 도구도 들어 있습니다. 이 도구를 이용하면 단순 텍스트나 정규 표현식 질의를 통해 특정 기능을 제공하는 패키지를 찾을 수 있으며, 패키지 관리 시스템의 의존성 관계를 조회할 수도 있습니다. apt-cache를 사용하는 몇 가지 일반적인 방법:
설명에 단어가 포함된 패키지를 찾기:
apt search 단어
패키지의 자세한 정보 출력:
apt show 패키지
주어진 패키지가 의존하는 패키지 출력:
apt-cache depends 패키지
패키지의 가용한 버전 정보와 해당 패키지에 역의존성(reverse-depends)이 있는 패키지들에 대한 상세 정보를 출력:
apt-cache showpkg 패키지
더 자세한 정보는 apt 패키지를 설치하고
apt(8),
apt-get(8),
sources.list(5)
매뉴얼 페이지를 읽어보십시오. 또한 apt-doc 패키지를 설치한
후 /usr/share/doc/apt-doc/guide.html/index.html 파일을
읽으십시오.
aptitude는 apt 패키지 관리 인프라의 프런트엔드를 제공하는 데비안 시스템용 패키지 관리자입니다. aptitude는 curses 라이브러리를 사용하는 텍스트 기반 인터페이스입니다. 작업은 시각적 인터페이스나 명령줄(커맨드 라인)에서 수행할 수 있습니다.
aptitude를 사용하면 관리 작업을 빠르고 쉽게 수행할 수 있습니다. 사용자는 패키지 목록을 보고 패키지 설치, 업그레이드, 제거 같은 패키지 관리 작업을 수행할 수 있습니다.
aptitude는 apt-get의 기능 뿐 아니라, 다음과 같은 많은 추가 기능들을 제공합니다:
aptitude 는 패키지의 모든 버전에 쉬운 접근을 제공합니다.
aptitude는 더 이상 사용되지 않는 소프트웨어를 "Obsolete and Locally Created Packages" 항목 아래에 나열하여 이를 쉽게 추적할 수 있게 해줍니다.
aptitude는 특정 패키지를 검색하고 패키지 표시 범위를 제한할 수 있는 상당히 강력한 시스템을 포함하고 있습니다. mutt의 표현식 구문에서 영감을 얻었기 때문에, mutt에 익숙한 사용자라면 이 시스템을 빠르게 익힐 수 있습니다.
aptitude를 사용하여 미리 정의된 task를 설치할 수 있습니다. 자세한 내용은 8.1.5절. “tasksel” 참조.
aptitude 전체 화면 모드는 su 기능이 내장되어 있어 일반 사용자 계정으로도 실행할 수 있습니다. 관리자 권한이 실제로 필요한 작업이 발생하면 su를 호출하며 (root 암호가 설정되어 있다면) root 암호를 물어봅니다.
aptitude는 시각적 인터페이스(단순히 aptitude 실행)를
통해 사용하거나 명령줄에서 직접 사용할 수 있습니다. 사용되는 명령줄 구문은 apt-get에서 사용하는
것과 매우 비슷합니다. 예를 들어, foo 패키지를 설치하려면
aptitude install 를 실행할 수
있습니다.
foo
aptitude는 콘솔에서 일상적인 패키지 관리를 수행할 때 권장되는 프로그램입니다.
synaptic은 그래픽 패키지 관리자입니다. 사용자에게 친숙한 방식으로 소프트웨어 패키지를 설치, 업그레이드 및 제거할 수 있습니다. 적성에 의해 제공되는 대부분의 기능과 함께 사용된 리포지터리 목록을 편집할 수 있는 기능도 있으며 패키지와 관련된 사용 가능한 모든 문서를 탐색할 수 있습니다. 자세한 내용은 Synaptic 웹사이트를 참조하십시오.
특정 작업을 수행하려고 할 때 요구 사항을 충족하는 적절한 패키지 제품군을 찾는 것이 어려울 수 있습니다. 데비안 개발자는
task를 정의했는데, task는 특정 활동과 관련된 여러 개별 데비안 패키지의 모음입니다. task는
tasksel 프로그램 또는 aptitude 를 통해 설치할 수
있습니다.
일반적으로 데비안 설치 프로그램은 표준 시스템 및 데스크톱 환경과 관련된 작업을 자동으로 설치합니다. 설치된 특정 데스크톱 환경은
사용되는 CD/DVD 미디어에 따라 달라지며, 가장 일반적으로 GNOME
데스크톱(gnome-desktop 태스크)입니다. 또한 설치 프로세스 전체에서 선택한 항목에 따라
시스템에 작업이 자동으로 설치될 수 있습니다. 예를 들어, 영어 이외의 언어를 선택한 경우 연결된 태스크도 자동으로 설치됩니다.
이 프로그램은 데비안 아카이브(.deb) 파일을 다룹니다. 몇 가지 일반적인 용도:
모든 옵션 찾기: dpkg-deb --help.
데비안 아카이브 파일에 어떤 파일이 들어있는지 확인: dpkg-deb --contents
foo_VVV-RRR.deb
지정된 데비안 아카이브에 들어있는 파일들을 사용자가 지정한 디렉터리에 추출합니다: dpkg-deb --extract
foo_VVV-RRR.deb tmp는 foo_VVV-RRR.deb에 들어있는 각
파일들을 tmp/ 디렉터리에 추출합니다. 이는 패키지를 루트 파일 시스템에 설치하지 않고, 국소적인
디렉터리 내에서 패키지의 내용을 조사할 때 편리합니다.
패키지에서 제어 정보 파일들을 추출: dpkg-deb --control foo_VVV-RRR.deb
tmp.
dpkg-deb --extract를 써서 단순히 풀기만 한 패키지들은 올바르게 설치되지 않는다는 점에
유의하십시오. 대신 dpkg --install을 사용하십시오.
더 자세한 정보는 매뉴얼 페이지 dpkg-deb(1)에 있습니다.
Debian GNU/Linux 시스템의 커널(파일 시스템)은 파일이 사용 중인 동안에도 파일을 바꾸는 기능을 지원합니다.
우리는 또한 부팅 시 데몬을 시작하거나, 런레벨이 변경될 때(예: 다중 사용자 모드에서 단일 사용자 모드로 전환되거나 시스템이 정지될 때) 데몬을 중지하는 데 쓰이는 start-stop-daemon 프로그램을 제공합니다. 데몬을 포함한 새 패키지가 설치될 때 설치 스크립트에서도 이와 같은 프로그램을 사용하여, 실행 중인 데몬을 중지하고 필요에 따라 다시 시작합니다.
데비안 시스템에 설치된 모든 패키지의 상태를 확인하려면, 실행할 명령어
dpkg --list
이 명령은 각 패키지에 대해 한 줄 요약을 출력하며, 여기에는 (헤더에 설명된) 두 글자 상태 기호, 패키지 이름, 설치된 버전, 그리고 짧은 설명이 포함됩니다.
이름이 "foo"로 시작하는 패턴과 일치하는 패키지들의 상태를 확인하려면, 실행할 명령어:
dpkg --list 'foo*'
특정 패키지에 대한 더 상세한 보고서를 확인하려면, 실행할 명령어:
dpkg --status packagename
설치된 패키지 foo에서 제공하는 모든 파일의 목록을 나열하려면 실행할 명령어.
dpkg --listfiles foo
설치 스크립트에 의해 생성된 파일들은 표시되지 않는다는 점 유의하십시오.
이름이 foo인 파일을 생성한 패키지를 식별하려면, 다음 중 하나를 실행:
dpkg --search foo
이것은 설치된 패키지 중에서 foo를 검색합니다. (이 방식은 (현재)
/var/lib/dpkg/info/ 디렉터리에 있는 확장자가
.list인 모든 파일을 검색하여, 해당 파일을 포함하고 있는 모든 패키지의 이름과 diversion을
출력하도록 결과를 조정하는 것과 같습니다.)
이에 대한 더 빠른 대안은 dlocate 도구.
dlocate -S foo
zgrep foo Contents-ARCH.gz
이것은 전체 경로 이름에 foo 부분문자열이 포함된 파일들을
검색합니다. Contents-ARCH.gz 파일(여기서 ARCH는 원하는 아키텍처를 나타냄)은 데비안
아카이브 사이트의 주요 패키지 디렉터리(main, non-free, contrib)
내(/debian/dists/trixie 아래)에
있습니다. Contents 파일은 해당 파일이 위치한 하위 디렉터리 트리에 속한 패키지들만
참조합니다. 따라서 사용자는 파일 foo가 포함된 패키지를 찾기 위해 하나 이상의
Contents 파일을 검색해야 할 수도 있습니다.
이 방법은 현재 시스템에 설치되어 있지 않은 패키지에 포함된 파일들도 찾아낼 수 있다는 점에서 dpkg
--search보다 유리합니다.
apt-file search
foo
만약 apt-file 패키지를 설치하면, 위에서 언급한 것과
비슷하게 전체 경로 이름에 부분 문자열이나 정규 표현식 foo가 포함된 파일들을 검색합니다. 위 사례와
비교했을 때의 장점은 Contents-ARCH.gz 파일들을 직접 가져올 필요가 없다는
것입니다. (root 권한으로) apt-file update를 실행하면
/etc/apt/sources.list에 정의된 모든 소스에 대해 이 작업을 자동으로 수행하기
때문입니다.
일부 패키지는 프로그램("foo")과 데이터("foo-data") (또는 "foo" 및 "foo-doc")로 나뉩니다. 이는 데비안의 많은 게임, 멀티미디어 애플리케이션, 사전 프로그램에 적용되는 방식입니다. 이렇게 분리한 이유는 일부 사용자가 프로그램을 설치하지 않고도 원본 데이터에만 접근하고 싶어 할 수 있고, 데이터 없이 프로그램만 실행할 수도 있어 "foo-data"를 선택 사항으로 만들기 위해서입니다.
라이브러리를 다룰 때도 비슷한 상황이 생깁니다: 일반적으로 응용 프로그램이 포함된 패키지가 라이브러리에 의존하기 때문에 라이브러리가 함께 설치됩니다. 응용 프로그램 패키지를 purge 하더라도 해당 라이브러리 패키지는 시스템에 그대로 남을 수 있습니다. 또 다른 사례로, 응용 프로그램 패키지가 업그레이드 되면서 더 이상 libdb4.2에 의존하지 않고 libdb4.3에 의존하는 경우.
이 경우 "foo-data"는 "foo"에 의존하지 않으므로, "foo" 패키지를 제거해도 대부분의 패키지 관리 도구에서 "foo-data"가 자동으로 제거되지 않습니다. 이는 라이브러리 패키지의 경우도 마찬가지입니다. 이렇게 처리하는 이유는 순환 의존성(circular dependencies) 문제를 방지하기 위해서입니다. 그러나, 패키지 관리 도구로 apt-get( 8.1.2절. “APT” 참조) 또는 aptitude (8.1.3절. “aptitude” 참조)를 사용한다면, 이 도구들이 자동으로 설치된 패키지들을 추적하여 시스템에 이를 사용하는 패키지가 더 이상 남아 있지 않을 때 제거할 수 있는 기능을 제공할 것입니다.