데비안 리눅스 패키지 매니저 dpkg와 apt

이 글은 리눅스의 패키지 매니저와 그 사용 방법을 설명한다.


얘기하기 전에 리눅스 배포판 얘기가 나오면 항상 그 종류가 너무 많아서 이번에 정리를 하려고 한다.

두 가지 주요 리눅스 배포판 - Debian, Redhat

  • 모든 리눅스 배포판의 목록은 여기서 얻을 수 있다.

  • 리눅스 배포판 간의 부모-자식 트리를 보면, 개수 기준으로(점유율 X) 대충 눈대중으로 계산했을 때

    • Redhat 1/4
      • Redhat은 아래의 배포판들을 제작한다.
        • RHEL(GPL 기반 enterprise. 안정성 중점)
        • CentOS(GPL + RHEL의 상표 제거 버전 - 커뮤니티 드리븐인데 레드헷에서 인수했다),
        • Fedora(RHEL의 upstream 버전. 신규 기능 출시 중점)
    • Slackware 1/10
    • 기타 전체 1/4

    정도이므로, 나머지 Debian 기반의 리눅스 배포판의 개수는 전체 배포판 중 40%를 차지한다.

  • OpenSUSE도 여러 글에서 빠지지 않고 Wikipedia에서도 well-known으로 소개되는데, 기반 배포판이 없고, 파생 배포판도 유명한 게 없다.


점유율도 궁금해져서 찾아봤는데,

  • Ubuntu 34%
  • Debian 15% (Ubuntu가 아닌 Debian 및 자식 배포판인 듯하다)
  • CentOS 10%
  • Redhat 1% (RHEL)
  • 알 수 없음 39%

[출처]

으로 Ubuntu가 강세였다. 다만 크고 보수적인 기업일수록 CentOS 혹은 RHEL을 쓰는 게 타당할 듯하다. Ubuntu가 좋지 못하다는 게 아니라, 아무래도 상용 OS 이니까 더 나은 면이 있을 수 밖에 없다고 생각한다.


Debian, Ubuntu의 패키지 매니저 dpkg, apt

dpkg

일단 dpkg는 데비안 배포판에 포함된 패키지 매니저로, 우분투 등의 데비안 기반 배포판에 모두 포함돼있다. dpkg는 설치, 제거, 설치된 패키지 조회가 가능하지만 기능 면에서 부족하다. dpkg는 설치 파일로 .deb 확장자를 쓰며 사용자들이 직접 dpkg로 패키지를 관리하지는 않는다.

Ubuntu가 아닌 Debian도 apt를 사용한다. 즉 apt 역시 모든 데비안 배포판에 포함된 패키지 매니저이다.

1
2
3
4
5
6
7
8
# 패키지 설치
$ dpkg -i <packageFile>

# 설치된 패키지 조회
$ dpkg -l [options...]

# 패키지 제거
$ dpkg -r <packageName>

apt

apt는 사용자들이 사용하는 패키지 매니저이며, dpkg를 감싼 것으로 더 많은 기능을 제공한다.

apt는 프론트엔드라고 불리는데, apt의 주요 기능은 다음과 같다:

  • Search for new packages.
  • Upgrade packages.
  • Install or remove packages (dpkg와 동일).
  • Upgrade the whole system to a new release (= OS 버전 업그레이드).

apt로 묶이는 도구들은 다음과 같다:

  • apt-get for retrieval of packages and information about them from authenticated sources and for installation, upgrade and removal of packages together with their dependencies
  • apt-cache for querying available information about installed as well as available packages
  • apt-cdrom to use removable media as a source for packages
  • apt-config as an interface to the configuration settings
  • apt-key as an interface to manage authentication keys
  • apt-extracttemplates to be used by debconf to prompt for configuration questions before installation
  • apt-ftparchive creates Packages and other index files needed to publish an archive of deb packages
  • apt-sortpkgs is a Packages/Sources file normalizer
  • apt is a high-level command-line interface for better interactive usage

여기서 apt만 사용할 줄 알면 충분하다.


우리가 흔하게 사용하는 apt 명령어를 돌아보자.

1
2
3
4
# 쉽고 직관적인 명령어
$ apt install <packageName>

$ apt remove <packageName>

이 중 평소 따라치라고 해서 따라쳤지만 정확히 무슨 의미인지 몰랐던 명령어들을 정리한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 패키지 목록을 갱신한다. 
# /var/lib/apt/lists 밑에, 레포지토리 이름에 대응되는 파일에 각 패키지와 메타데이터가 저장된다.
# 레포지토리 목록은 /etc/apt/sources.list 파일에 저장된다.
$ apt update

# 가능한 최신 버전으로 업그레이드 가능한 모든 패키지를 업그레이드한다.
# upgrade 명령이 새 버전의 새 의존성에 포함된 패키지를 설치할 순 있어도, 더 이상 필요 없는 기존 패키지를 제거하는 일은 없다.
$ apt upgrade

# upgrade + 현재 버전의 패키지가 삭제돼야 하는 경우 삭제를 수행한다.
$ apt full-upgrade

# apt full-upgrade와 문서화가 유사하게 돼있다. (정확히 무슨 기능인지는 잘 모르겠다.)
$ apt-get dist-upgrade

어떤 패키지의 최신 버전을 설치하려면 설치 전에 apt update를 하는 것은 중요하다.

다만 apt upgrade 등의 작업은 모든 패키지 대상이므로 대개 예상치 못한 결과를 가져올 수 있을 듯하다.


아래는 기타 apt 명령어를 정리한 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# purge는 remove와 다르게, '설정' 파일도 제거한다.
$ apt purge <packageName>

# 미사용 패키지를 추려 모두 제거한다.
# 어떤 패키지가 삭제될지 미리보기는 없는 듯하다.
# 그냥 해봤는데 아무 패키지도 제거되지 않았다.
$ apt autoremove

# 패키지 키워드 검색
# 별로 쓸모는 없는 듯하다.
$ apt search <keyword>

# 설치된 패키지 조회
# 매우 길기 때문에 grep 등으로 조회하는 게 좋겠다.
$ apt list [--upgradable] # upgradable 옵션 사용 시 업그레이드 가능한 패키지 및 업그레이드 버전을 표시한다.

데비안 리눅스 패키지 매니저 dpkg와 apt

https://jsqna.com/linux-debian-dpkg-apt/

Author

Seongbin Kim

Posted on

21-09-12

Updated on

21-09-12

Licensed under

댓글