DNF란?
CentOS 리눅스를 사용한 사람들에게는 yum 이라는 명령어가 익숙할 것입니다. 쉽게 말하면, DNF는 그 YUM의 차세대 버전이라 할 수 있습니다.
YUM은 Yellowdog Updater, Modified 라는 이름의 약자로 된 명령어로서, .rpm 기반의 리눅스 배포판을 위한 패키지 관리툴입니다. 즉, DNF를 사용해 패키지를 설치, 업데이트, 삭제 할 수 있습니다.
한편, DNF는 Dandified YUM이라는 뜻을 지니고 있는데, 이름이 뜻하는 것처럼 YUM의 대체자이자 후계자입니다.
DNF는 최근에 갑자기 소개된 명령어는 아닙니다. 2013년에 Fedora 18을 통해 최초 소개 되었고, 2015년 이후로는 Fedora 22, Red Hat Enterprise Linux, OpenMandrivia 등의 리눅스 배포판의 기본 패키지 매니저로 사용되었습니다.
초기 버전의 DNF는 파이썬으로 작성되었으나, 이후 대부분의 모듈을 C로 마이그레이션 하여 성능 개선을 하였습니다.
DNF가 기존 YUM에 대해 갖는 장점은 아래와 같습니다.
- 성능 개선 (더 빠름)
- 메모리 사용량 개선
- 사용자 친화적인 UI 개선
- 의존성 관리 효율성 개선
DNF 설치 방법
Fedora22부터는 기본적으로 지원되지만, 기본적으로 제공되지 않는 버전의 리눅스에서 사용하려면 다음과 같이 설치할 수 있습니다.
$ yum install epel-release
$ yum install dnf
repository 추가 방법
기존에는 /etc/yum.repos.d에 repository 파일을 직접 추가해주는 방식을 사용했습니다. 여전히 이 방법은 유효합니다. repo 파일을 확보했다면, /etc/yum.repos.d에 추가해줘도 됩니다.
그런데, dnf를 사용하면서 repo를 추가하는 방법이 또 있습니다.
$ dnf config-manager -add-repo repo주소
위의 명령어와 같이 실행하면 쉽게 repo를 추가할 수 있습니다.
DNF 주요 명령어 소개
DNF 명령어로 패키지를 관리할 수 있는 만큼, 패키지의 repo 정보 조회, 패키지 조회, 패키지 설치, 패키지 업데이트, 패키지 삭제 등의 명령어가 주를 이룹니다.
도움말 확인
잘 모르는 경우, help 명령어를 활용하면 자세한 사용법을 확인할 수 있습니다.
$ dnf help 명령어
repo 관련
$ dnf repolist
repo id repo name
docker-ce-stable Docker CE Stable - x86_64
ol8_MySQL80 MySQL 8.0 for Oracle Linux 8 (x86_64)
ol8_MySQL80_connectors_community MySQL 8.0 Connectors Community for Oracle Linux 8 (x86_64)
ol8_MySQL80_tools_community MySQL 8.0 Tools Community for Oracle Linux 8 (x86_64)
ol8_UEKR6 Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)
ol8_addons Oracle Linux 8 Addons (x86_64)
ol8_appstream Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest Oracle Linux 8 BaseOS Latest (x86_64)
ol8_ksplice Ksplice for Oracle Linux 8 (x86_64)
ol8_oci_included Oracle Software for OCI users on Oracle Linux 8 (x86_64)
repolist 명령어를 실행하면, 현재 시스템에서 활성화된 접근 가능한 repo의 리스트를 보여줍니다.
$ dnf repoinfo
repoinfo 명령어로는, 좀더 상세한 정보를 보여줍니다.
$ dnf repoinfo
패키지 검색
이름을 정확히 알지 못하는 어떤 패키지를 검색하고 싶을 때는 아래와 같이 검색할 수 있습니다.
$ dnf search 검색어
패키지 조회
패키지의 이름을 확인했다면, 패키지의 세부 내용을 아래와 같이 확인할 수 있습니다.
$ dnf info 패키지명
패키지 설치
어떤 패키지를 설치하고 싶으면, 아래와 같이 설치하면 됩니다.
$ dnf install 패키지명
패키지 다운로드
만약, 설치는 하지 않고 패키지를 다운로드 하기만 하려면, 아래와 같이 실행합니다.
$ dnf download 패키지명
패키지 업그레이드
설치된 패키지 중, 업그레이드 해야하는 패키지가 있는지 확인하려면 다음과 같이 합니다.
$ dnf check-update
업그레이드 가능 여부를 확인한 패키지 중, 특정 패키지를 업그레이드 하려면 다음과 같이 실행합니다.
$ dnf upgrade 패키지명
$ dnf update 패키지명
패키지 삭제
설치한 패키지 중 특정 패키지를 삭제하려면 다음과 같이 실행합니다.
$ dnf remove 패키지명
$ dnf erase 패키지명
캐시된 패키지 제거
dnf 성능 향상을 위해 관련 정보들을 캐시하는데, 이 정보를 초기화 하고자 하면 다음과 같이 실행합니다.
$ dnf clean all