개념 사전 · 프로그램

DNF

디엔에프

는 계열에서 저장소와 의존성, 패키지 설치 거래를 관리하는 상위 도구이다. 설치된 목록과 저장소 후보를 비교하여 필요한 추가·교체·제거를 계산한다.

밑줄 용어에 마우스를 올리거나, 키보드로 선택하거나, 터치하면 설명을 볼 수 있습니다.

01무엇이고, 어떤 일을 하나

  • 여러 저장소의 패키지 메타데이터와 후보 버전을 조회한다.
  • 의존성·충돌·버전 조건을 해결하여 일관된 설치 거래를 계획한다.
  • 패키지 거래 이력과 업데이트 후보를 통해 시스템 변경을 추적한다.

02어떤 순서로 동작하나

  1. 현재 상태 수집

    데이터베이스에서 설치된 패키지를 읽고 활성화된 저장소 구성을 확인한다. 저장소 우선순위·제외 설정 등에 따라 사용할 후보가 제한된다.

  2. 후보와 조건 비교

    메타데이터의 이름·버전··의존성 정보를 읽어 요청과 맞는 후보를 찾는다. 같은 프로그램의 외부 직접 설치는 이 관리 상태와 다를 수 있다.

  3. 거래 계획 계산

    가 함께 설치하거나 교체해야 하는 패키지를 정한다. 한 패키지의 새 버전이 요구하는 라이브러리가 없으면 원하는 업그레이드가 선택되지 않을 수 있다.

  4. 검증과 적용

    계획을 승인하면 패키지를 받아 검증하고 거래를 실행한다. 이력은 패키지 변경을 기록하지만 데이터베이스 내용과 모든 사용자 파일을 되돌리는 완전한 백업은 아니다.

03먼저 알아둘 용어와 구성요소

패키지 파일과 후보·의존성 메타데이터를 제공하는 저장소이다.
현재 상태와 요청을 만족하도록 패키지 조합을 계산하는 구성요소이다.
이름·epoch·version·release·architecture를 함께 고려하는 패키지 식별 관점이다.
업데이트 후보를 조회하는 동작이다. 에서 후보가 있으면 100이라는 특수 종료 코드를 사용할 수 있다.
설치·업데이트·제거를 묶어 수행하는 작업 단위이다.
과거 거래를 조회하는 인터페이스이다. 이전 패키지의 가용성과 외부 상태 때문에 되돌리기 가능 범위가 제한될 수 있다.
LEARN THROUGH PRACTICE

저장소의 모듈 목록과 실제 설치 버전 구별하기

사용 가능한 패키지 선택지, 설치 데이터베이스, 실행 파일 버전을 구분하여 버전 확인 결과를 해석한다.

실습 구성과 전제

  • 의 모듈 목록과 의 -query는 서로 다른 시스템 사례다. 같은 서버에서 이어 실행한 결과가 아니다.
  • 화면의 버전은 촬영 시점의 상태다. 현재 권장 버전이나 최신 버전 목록으로 읽지 않는다.
  1. module list를 설치 목록으로 오해하지 않는다

    • 의 모듈 목록에는 이름·스트림·프로필과 표시 기호가 나온다. 스트림은 배포판이 제공하는 패키지 계열의 선택지이며, 여러 줄이 모두 설치되어 있다는 뜻은 아니다.
    • 기본값 표시 [d]와 활성화·설치 표시는 서로 다르다. 출력 하단의 기호 설명과 저장소 구성을 함께 읽어야 한다.
    bash
    dnf module list php
    rpm -q php
    php --version

    모듈을 제공하는 계열 환경의 조회 예시다.

    5/26 - php, mariaDB · 실습·개념 참고 화면 4원본 크기로 보기 ↗
    • MariaDB·nginx·PHP 등 이름 아래에 여러 버전 스트림이 나열된다.
    • 각 스트림에는 프로필과 [d] 같은 표시가 붙어 있어 단순 버전 문자열 이상의 상태를 담는다.
    확인 기준

    사용 중인 버전을 확인하려면 설치 데이터베이스와 실행 파일을 추가 조회한다. 모듈을 제공하지 않는 배포판 버전에서는 같은 출력이 나오지 않을 수 있다.

  2. 설치 데이터베이스의 이름·버전을 읽는다

    • -query -W는 계열 설치 데이터베이스에서 지정 패키지를 조회한다. 화면의 두 제품 버전은 이 시스템에 등록된 패키지 정보다.
    • 패키지가 설치되었다고 서비스가 정상 실행 중인 것은 아니다. 설정 오류나 중지 상태는 서비스 조회로 별도 확인한다.
    bash
    dpkg-query -W -f='${Package}\t${Version}\t${db:Status-Status}\n' nginx

    계열에서 버전과 설치 상태 필드를 함께 읽는 재구성 예시다.

    9/1 - beat, nessus · 명령·상태 출력 1원본 크기로 보기 ↗
    • dpkg-query -W 뒤에 elasticsearch와 kibana 두 패키지명이 지정되어 있다.
    • 결과는 제품별 한 줄로 버전을 출력하며, 두 줄 모두 9.5.2가 보인다.
    확인 기준

    조회 오류와 비어 있는 결과를 성공적인 미설치 확인과 혼동하지 않는다. 패키지명 및 명령 종료 상태도 함께 읽는다.

  3. 실행되는 파일의 출처까지 연결한다

    • PATH에서 먼저 찾은 프로그램이 방금 조회한 패키지의 실행 파일인지 확인한다. 별도 설치한 버전이나 가상 환경이 앞에 있을 수 있다.
    • 명령 경로를 찾은 뒤 -qf 또는 -query -S로 소유 패키지를 연결한다. 패키지 버전과 프로그램의 자체 버전 표기는 배포판 수정 번호 등으로 형태가 다를 수 있다.
    bash
    command -v php
    readlink -f "$(command -v php)"
    # RPM 계열: rpm -qf /실제/실행파일
    # Debian 계열: dpkg-query -S /실제/실행파일

    경로를 먼저 확인한 다음 해당 배포판의 파일 소유 조회를 적용한다.

    확인 기준

    설치 버전과 실행 버전이 다르면 저장소를 바로 바꾸기보다 실제 경로·심볼릭 링크·가상 환경부터 확인한다.

실습에서 확인한 동작 원리

  • 저장소의 선택지, 설치 기록, 실행 중인 프로그램은 서로 다른 관찰 지점이다.
  • 목록의 버전 숫자만 비교하지 말고 스트림 표시·설치 상태·실행 경로를 함께 연결한다.
관련 개념·전체 실습 화면 이어서 읽기 →
동작·명령 참고 문서

04예제로 따라가기

  • info 는 저장소와 설치 상태의 정보를 읽는 조회 예이다. 설치 여부와 후보 가용성을 구분한다.
  • 결과 0은 업데이트 후보 없음, 100은 후보 있음, 오류 코드는 실패라는 의미를 나누어 자동화한다.
  • 웹 서버가 이미 메모리에 적재한 라이브러리는 패키지 교체만으로 즉시 새 파일을 다시 읽지 않을 수 있다. 변경 적용은 상태까지 연결한다.

05혼동하기 쉬운 점과 확인 기준

  • 라는 이름만으로 모든 세대의 옵션·플러그인이 동일하다고 보지 않는다. 와 DNF5 등 설치된 구현과 문서를 맞춘다.
  • 의존성 오류를 해결하기 위해 강제 제거·검증 생략을 먼저 적용하지 않는다. 어떤 패키지 조건이 충돌하는지 계획을 읽는 것이 우선이다.

06상세 노트 · 실습 자료

헤더 구조, 설정 예시, 수치 계산과 수업 캡처는 아래 노트에서 이어집니다.

공식 문서 · 표준

기초 개념과 동작 설명을 대조한 자료입니다. 제품 버전과 실제 설정에 따른 차이는 본문 및 원문에서 확인하세요.