DNF 명령어 구조
DNF(Dandified YUM)은 RPM 기반 리눅스 배포판에서 사용하는 현대적인 패키지 관리자로, Fedora 18부터 도입되어 CentOS 8 및 RHEL 8 이상에서 YUM을 대체했습니다. 내부적으로는 RPM, libsolv, hawkey 라이브러리를 활용하여 의존성 해석과 설치 프로세스를 최적화합니다.
dnf [옵션] [명령] [패키지]
주요 옵션
- -h / --help: 명령어 사용법 출력
- -c <경로>: 사용자 정의 설정 파일 지정
- -R <초>: 명령 타임아웃 시간 설정
- -q: 최소한의 출력 (조용한 모드)
- -v: 상세 로그 출력
- -y: 모든 확인 질문에 자동으로 "yes" 응답
핵심 명령어
| 명령 | 설명 |
|---|---|
| check-update | 업데이트 가능한 패키지 확인 |
| clean all | 다운로드 캐시 정리 |
| remove 또는 erase | 패키지 제거 |
| deplist | 특정 패키지가 의존하는 구성 요소 목록 출력 |
| info | 패키지에 대한 상세 정보 표시 |
| install | 새로운 패키지 설치 |
| list | 사용 가능한 패키지 목록 조회 |
| provides | 특정 파일이나 기능을 제공하는 패키지 검색 |
| search | 패키지 설명 또는 이름 기반 키워드 검색 |
| upgrade | 설치된 패키지를 최신 버전으로 업그레이드 |
참고:dnf update는 내부적으로dnf upgrade로 연결됩니다. 두 명령은 동일한 동작을 수행합니다.
DNF와 YUM의 주요 차이점
1. 의존성 해결 능력
DNF는 libsolv 엔진을 사용해 복잡한 의존성 트리를 더 빠르고 정확하게 분석합니다. 반면 YUM은 순차적 처리 방식으로 인해 충돌 가능성과 느린 해석 속도 문제가 있었습니다.
2. 성능 및 병렬 처리
DNF는 다중 패키지 다운로드 및 설치를 병렬로 수행할 수 있어 전체 작업 시간을 크게 단축합니다. YUM은 기본적으로 싱글 스레드 방식으로 동작하며, 네트워크 I/O 병목 현상이 발생하기 쉽습니다.
3. 설정 구조
두 도구 모두 .repo 확장자를 가진 저장소 정의 파일을 사용하지만, YUM은 /etc/yum.conf라는 글로벌 설정 파일을 중심으로 동작합니다. DNF는 /etc/dnf/dnf.conf를 사용하며, 보다 모듈화된 구성이 특징입니다.
4. 출력 인터페이스
DNF는 진행 상태, 다운로드 속도, 남은 시간 등 실시간 정보를 풍부하게 제공하여 사용자 경험을 개선했습니다. 오류 메시지도 더 직관적이고 문제 해결에 유용합니다.
5. 호환성 및 배포 지원
CentOS 8+, RHEL 8+, Fedora 최신 버전에서는 DNF가 기본 패키지 매니저입니다. 이전 버전(CentOS 7 이하)은 YUM을 사용하며, 하위 호환성을 위해 yum 명령어가 여전히 존재할 수 있습니다.
6. 플러그인 아키텍처
DNF는 확장 가능한 플러그인 시스템을 내장하고 있어, 사용자가 커스텀 기능(예: 자동 백업, 보안 스캔 통합)을 추가할 수 있습니다. YUM도 일부 플러그인을 지원하지만, 설계상 한계가 있었습니다.
실제 사용 예시
# 시스템 업데이트 점검
dnf check-update
# nginx 설치 (자동 승인 포함)
dnf install nginx -y
# httpd가 어떤 파일을 제공하는지 확인
dnf provides /etc/httpd/conf/httpd.conf
# 설치 가능한 모든 vim 관련 패키지 검색
dnf search vim
# 불필요한 캐시 삭제
dnf clean packages
최신 RPM 기반 시스템에서는 DNF를 권장하며, 스크립트 작성 시에도 #!/usr/bin/env dnf 또는 명시적 호출 방식을 사용하는 것이 바람직합니다.