데비안은 설치, 업그레이드, 구성 및 소프트웨어를 제거하기 위한 포괄적인 패키지 관리 시스템을 갖추고 있습니다. 데비안 패키지 관리 시스템과 연동할 수 있는 여러 가지 도구들이 있으며, 시스템 관리자들이 쉽게 자동화할 수 있는 명령줄 입력 도구들과 새롭게 데비안을 사용하는 분들을 위한 쉬운 그래픽사용자인터페이스를 갖는 도구들도 있습니다.
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 -l
...
ii zip 3.0-8 amd64 Archiver for .zip files
ii zlib1g:amd64 1:1.2.8.dfsg amd64 compression library - runtime
ii zlib1g:i386 1:1.2.8.dfsg i386 compression library - runtime
ii zlib1g-dev:amd 1:1.2.8.dfsg amd64 compression library - development
설치 목록 중에서 원하는 패키지를 검색할 때에는 grep을 사용합니다. 전체 목록에서 nginx가 포함된 패키지는 다음과 같이 검색할 수 있습니다.
- dpkg -l | grep nginx
ii nginx 1.6.2-5debian3.1 all small, powerful, scalable web/proxy server
ii nginx-common 1.6.2-5debian3.1 all small, powerful, scalable web/proxy server - common files
ii nginx-core 1.6.2-5debian3.1 amd64 nginx web/proxy server (core version)
패키지구성파일
어떤 패키지의 설치 목록은 다음과 같이 출력할 수 있습니다.
- dpkg -L ufw
...
/usr/share/ufw/after.rules
/usr/share/ufw/user6.rules
/usr/share/ufw/before6.rules
/usr/share/ufw/user.rules
설치한 파일의 패키지
하드디스크의 어떤 파일이 어떤 패키지에서 설치된 것인지 확인하는 명령입니다.
- dpkg -S /etc/host.conf
base-files: /etc/host.conf
그렇지만, 많은 파일들이 패키지에 설치되는 과정 중에 생성되기 때문에 이런 파일들은 어떤 패키지에 속해 있는지 dpkg -S로는 알 수가 없습니다.
로컬 파일 설치
하드디스크에 있는 .deb 패키지들은 다음처럼 설치할 수 있습니다.
- sudo dpkg -i zip_3.0-4_i386.deb
로컬 파일 제거
패키지를 제거하고 싶다면 다음과 같이 할 수 있습니다.
- sudo dpkg -r zip
dpkg를 이용해서 패키지를 제거하는 것은 좋지 않습니다. 의존성 검사를 하지 않고 패키지를 제거하기 때문에 다른 프로그램이 올바르게 동작하지 않을 수도 있습니다. |
Apt-Get
apt-get 명령은 데비안에서 제공하는 APT와 함께 프로그램의 설치, 제거, 업데이트 등을 수행하는 강력한 명령줄 도구입니다. 또한 패키지의 목록을 갱신하고 심지어는 전체 데비안 시스템을 업데이트를 할 수도 있습니다.
이 명령어는 명령줄에서 실행되기 때문에 시스템 관리자가 외부에서 ssh 등을 통해서 시스템에 접근해서 명령을 수행할 수도 있으며, cron 등을 통해서 주기적으로 명령을 수행할 수도 있습니다.
패키지 설치
- sudo apt-get install nmap
패키지 제거
- sudo apt-get remove nmap
패키지 목록 갱신
APT 패키지 색인은 /etc/apt/sources.list 파일과 /etc/apt/sources.list.d 디렉토리에 있는 정의된 저장소의 패키지 목록에 대한 데이터베이스입니다. 내 컴퓨터에 저장된 목록을 최신판으로 갱신하고 싶다면 다음과 같이 실행합니다.
- sudo apt-get update
패키지 업데이트
내 컴퓨터에 설치된 패키지들에 대한 정보와 저장소의 데이터베이스로부터 가져온 패키지들에 대한 정보를 비교해서 최신의 목록으로 업데이트를 해 줍니다. 그렇기 때문에 패키지 목록 갱신을 반드시 먼저 해야 합니다.
- sudo apt-get upgrade
패키지의 설치, 삭제 등을 포함한 모든 apt-get의 행위는 /var/log/dpkg.log 로그 파일에 정보가 저장됩니다.
Aptitude
명령창에서 옵션 없이 aptitude를 입력하면, APT 시스템에 대한 메뉴 형태의 텍스트 기반 프런트-엔드를 구성해 줍니다. 패키지의 설치, 제거, 업데이트 등에 대한 명령어들은 간단히 소문자를 누르면 실행이 됩니다.
일반 사용자들은 패키지 설치 등과 같은 권한이 없기 때문에 권한 상승을 위해 터미널 창에서 아래와 같이 입력합니다.
- sudo aptitude
Aptitude가 실행되면, 상단에 메뉴바를 볼 수 있으며, 메뉴바 아래로 두 개의 창을 볼 수 있습니다. 위쪽 창에는 새로운 패키지(New Packages)와 설치 안된 패키지(Not Installed Packages) 등과 같은 패키지 카테고리를 볼 수 있습니다. 아래쪽의 창에는 패키지와 패키지 카테고리와 관련된 정보를 볼 수 있습니다.
패키지 관리를 위해서 Aptitude를 사용하는 것은 비교적 간단합니다. 아래쪽에 Aptitude에서 패키지 관리를 하는 방법에 대해 소개합니다.
패키지 설치
패키지를 설치하기 위해서는, 설치 안된 패키지(Not Installed Packages)에서 방향키와 ↵ Enter키를 사용해서 원하는 패키지를 선택합니다. 원하는 패키지를 선택하셨다면, + 키를 누릅니다. 패키지 항목이 초록색으로 변할 것이며, 설치를 위해 선택이 되었다는 표시입니다. 이제 g를 누르면 아래 창에 패키지 설치에 대한 요약 정보가 표시됩니다. 다시 한번 g를 누르면 다운로드를 하여서 설치를 할 것입니다. 설치가 끝나면, ↵ Enter를 눌러서 메뉴로 돌아갑니다.
패키지 제거
패키지를 제거하기 위해서는, 설치된 패키지(Installed Packages)에서 방향키와 ↵ Enter키를 사용해서 원하는 패키지를 선택합니다. 원하는 패키지를 선택하셨다면, - 키를 누릅니다. 패키지 항목이 핑크색으로 변할 것이며, 제거를 위해 선택이 되었다는 표시입니다. 이제 g를 누르면 아래 창에 패키지 제거에 대한 요약 정보가 표시됩니다. 다시 한번 g를 누르면 패키지를 제거할 것입니다. 제거가 끝나면, ↵ Enter를 눌러서 메뉴로 돌아갑니다.
패키지 색인 업데이트
패키지 색인 업데이트를 위해서는, 간단히 u키를 누릅니다. 패키지 색인 업데이트가 시작될 것입니다.
패키지 업데이트
패키지를 업데이트하기 위해서는, 먼저 패키지 색인 업데이트를 수행하신 후에 U키를 누르면 업데이트될 모든 패키지가 선택됩니다. 이제 g를 누르면 아래 창에 패키지 업데이트에 대한 요약 정보가 표시됩니다. 다시 한번 g를 누르면 다운로드를 하여서 설치를 할 것입니다. 설치가 끝나면, ↵ Enter를 눌러서 메뉴로 돌아갑니다.
위쪽 창에 패키지 목록 내에 표시된 정보의 첫 번째 컬럼은, 패키지의 현재 상태에 대한 정보를 보여줍니다. 아래쪽에는 패키지 상태를 설명하는 키들입니다.
key | 의미 |
i | 설치된 패키지 |
c | 설치되지는 않았지만, 구성만 남은 패키지 |
p | 제거된 패키지 |
v | 가상 패키지 |
B | 망가진 패키지 |
u | 파일은 풀었지만, 구성은 하지 않은 패키지 |
C | 구성을 시도했지만, 완전히 끝나지 못한 패키지 |
H | 제거하려 했지만, 완전히 끝나지 못한 패키지 |
Aptitude를 끝내기 위해서는 q 키를 누르고 yes를 눌러서 확인하시면 됩니다. 많은 다른 기능은 F10을 눌러서 메인 메뉴에서 확인할 수 있습니다.
명령줄 Aptitude
Apt-get과 비슷하게 명령줄에서도 aptitude를 사용할 수 있습니다. 필요한 모든 의존성 패키지와 함께 nmap 패키지를 설치하기 위해서는 apt-get의 예제와 비슷하게 아래와 같이 명령합니다.
- sudo aptitude install nmap
패키지를 제거하기 위해서는 아래와 같이 명령합니다.
- sudo aptitude remove nmap
더 자세한 명령줄 선택사항은 man 페이지를 확인하세요.
Usage
시스템에 설정된 저장소 목록 얻기
- ls /var/lib/apt/lists/*_binary-amd64_Packages | sed -E 's/.*\/([^\/_]*).*/\1/' | sort -u
- apt-cache policy | sed -n 's/.*o=
.*/\1/p' | uniq
저장소-별 목록 얻기
- cat /var/lib/apt/lists/www.apache.org_*_Packages | grep '^Package: ' | cut -c 10- | sort -u | nl