DNF 툴을 사용하여 소프트웨어 관리

Red Hat Enterprise Linux 9

DNF 소프트웨어 관리 툴을 사용하여 RPM 리포지토리의 콘텐츠 관리

Red Hat Customer Content Services

초록

DNF 툴을 사용하여 RPM 리포지토리를 통해 배포된 콘텐츠를 찾고 설치 및 활용합니다. 패키지, 모듈, 스트림 및 프로필 작업을 수행하는 방법을 알아봅니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

Red Hat 문서에 관한 피드백 제공

문서에 대한 피드백에 감사드립니다. 어떻게 개선할 수 있는지 알려주십시오.

Jira를 통해 피드백 제출 (등록 필요)

  1. Jira 웹 사이트에 로그인합니다.
  2. 상단 탐색 모음에서 생성 을 클릭합니다.
  3. Summary (요약) 필드에 설명 제목을 입력합니다.
  4. Description (설명) 필드에 개선을 위한 제안을 입력합니다. 문서의 관련 부분에 대한 링크를 포함합니다.
  5. 대화 상자 하단에서 생성 을 클릭합니다.

1장. Red Hat Enterprise Linux 9의 소프트웨어 관리 툴

RHEL(Red Hat Enterprise Linux) 9에서 DNF 유틸리티를 사용하여 소프트웨어를 관리합니다. 이전 주요 RHEL 버전과의 호환성을 위해 yum 명령을 계속 사용할 수 있습니다. 그러나 RHEL 9에서는 yum 과 특정 수준의 호환성을 제공하는 dnf 의 별칭입니다.

참고

RHEL 8 및 RHEL 9는 DNF 를 기반으로 하지만 RHEL 7에서 사용되는 YUM 과 호환됩니다.

2장. RHEL 9의 콘텐츠 배포

다음 섹션에서는 Red Hat Enterprise Linux 9에서 소프트웨어가 배포되는 방법을 알아봅니다.

2.1. 리포지토리

RHEL(Red Hat Enterprise Linux)은 다양한 리포지토리를 통해 콘텐츠를 배포합니다. 예를 들면 다음과 같습니다.

BaseOS
BaseOS 리포지토리의 콘텐츠는 모든 설치의 기반을 제공하는 기본 운영 체제 기능의 코어 세트로 구성됩니다. 이 콘텐츠는 RPM 형식으로 사용할 수 있으며 이전 RHEL 릴리스와 유사한 지원 조건이 적용됩니다.
AppStream
AppStream 리포지토리의 콘텐츠에는 다양한 워크로드 및 사용 사례를 지원하는 추가 사용자 공간 애플리케이션, 런타임 언어 및 데이터베이스가 포함됩니다.
중요

BaseOS 및 AppStream 콘텐츠 세트는 모두 RHEL에서 필요하며 모든 RHEL 서브스크립션에서 사용할 수 있습니다.

CodeReady Linux Builder
CodeReady Linux Builder 리포지토리는 모든 RHEL 서브스크립션과 함께 사용할 수 있습니다. 이는 개발자가 사용할 수 있는 추가 패키지를 제공합니다. Red Hat은 CodeReady Linux Builder 리포지토리에 포함된 패키지를 지원하지 않습니다.

추가 리소스

2.2. Application Streams

Red Hat은 Application Streams로 여러 버전의 사용자 공간 구성 요소를 제공하며 핵심 운영 체제 패키지보다 더 자주 업데이트됩니다. 이를 통해 플랫폼 또는 특정 배포의 기본 안정성에 영향을 주지 않고 RHEL(Red Hat Enterprise Linux)을 사용자 지정할 수 있는 유연성이 향상됩니다.

Application Streams는 다음 형식으로 제공됩니다.

  • RPM 형식
  • RPM 형식의 확장인 모듈
  • 소프트웨어 컬렉션

RHEL 9는 dnf install 명령을 사용하여 설치할 수 있는 초기 Application Stream 버전을 RPM으로 제공하여 Application Streams 환경을 향상시킵니다.

RHEL 9.1부터 Red Hat은 라이프 사이클이 더 짧은 모듈로 추가 Application Stream 버전을 제공합니다.

중요

각 Application Stream에는 자체 라이프 사이클이 있으며 RHEL 9의 라이프 사이클과 동일하거나 짧을 수 있습니다. Red Hat Enterprise Linux Application Streams 라이프 사이클 을 참조하십시오.

항상 설치할 Application Stream 버전을 결정하고 RHEL Application Stream 라이프 사이클을 먼저 검토하십시오.

2.3. 모듈

모듈은 구성 요소를 나타내는 RPM 패키지 세트입니다. 일반적인 모듈에는 다음 패키지 유형이 포함되어 있습니다.

  • 애플리케이션이 있는 패키지
  • 애플리케이션별 종속성 라이브러리가 있는 패키지
  • 애플리케이션에 대한 문서가 있는 패키지
  • 도우미 유틸리티가 있는 패키지

2.4. 모듈 스트림

모듈 스트림은 AppStream 물리적 리포지토리에서 가상 리포지토리로 간주할 수 있는 필터입니다. AppStream 구성 요소의 모듈 스트림 버전입니다. 각 스트림은 개별적으로 업데이트를 수신하며 다른 모듈 스트림에 따라 달라질 수 있습니다.

모듈 스트림은 활성 또는 비활성 상태일 수 있습니다. 활성 스트림은 특정 모듈 스트림 내의 RPM 패키지에 대한 시스템 액세스를 제공하여 각 구성 요소 버전을 설치할 수 있습니다.

다음과 같은 경우 스트림이 활성화됩니다.

특정 모듈의 한 스트림만 지정된 시점에서 활성화할 수 있습니다. 따라서 특정 스트림의 패키지만 사용할 수 있습니다.

런타임 사용자 애플리케이션 또는 개발자 애플리케이션에 대한 특정 스트림을 선택하기 전에 다음을 고려하십시오.

  • 필수 기능 및 해당 기능을 지원하는 구성 요소 버전
  • 애플리케이션 또는 사용 사례와의 호환성
  • 애플리케이션 스트림의 라이프 사이클 및 업데이트 계획

사용 가능한 모든 모듈 및 스트림 목록은 패키지 매니페스트 를 참조하십시오. 구성 요소별 변경 사항은 릴리스 노트 를 참조하십시오.

2.5. 모듈 프로필

모듈 프로필은 서버, 클라이언트, 개발, 최소 설치 또는 기타와 같은 특정 사용 사례에 대해 함께 설치할 권장 패키지 목록입니다. 이러한 패키지 목록에는 일반적으로 BaseOS 리포지토리 또는 스트림의 종속 항목에서 모듈 스트림 외부의 패키지가 포함될 수 있습니다.

프로필을 사용하여 패키지를 설치하는 것은 사용자의 편의를 위해 제공되는 일회성 작업입니다. 추가 준비 단계 없이 동일한 모듈 스트림의 여러 프로필을 사용하여 패키지를 설치할 수도 있습니다.

각 모듈 스트림은 none을 포함하여 여러 프로필을 가질 수 있습니다. 지정된 모듈 스트림에 대해 일부 프로필을 기본값 으로 표시할 수 있으며 프로필을 명시적으로 지정하지 않은 경우 프로필 설치 작업에 사용됩니다. 그러나 모듈 스트림에 대한 기본 프로필이 존재할 필요는 없습니다.

예 2.1. nodejs 모듈 프로필

Node.js 런타임 환경을 제공하는 nodejs 모듈은 설치를 위해 다음 프로필을 제공합니다.

# dnf module list nodejs
Name 	   Stream	Profiles                                Summary
nodejs   18    	common [d], development, minimal, s2i   Javascript runtime
Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

이 예에서는 다음 프로필을 사용할 수 있습니다.

  • 공통: 프로덕션 지원 패키지입니다. 기본 프로필([d])입니다.
  • 개발: Node.js 개발 헤더를 포함한 프로덕션 지원 패키지입니다.
  • 최소: Node.js 런타임 환경을 제공하는 최소 패키지 세트입니다.
  • s2i: Node.js S2I(Source-to-Image) Linux 컨테이너를 생성하는 데 필요한 패키지입니다.

3장. DNF 구성

DNF 및 관련 유틸리티의 구성은 /etc/dnf/dnf.conf 파일의 [main] 섹션에 저장됩니다.

3.1. 현재 DNF 구성 보기

/etc/dnf/dnf.conf 파일의 [main] 섹션에는 명시적으로 설정된 설정만 포함되어 있습니다. 그러나 설정되지 않은 옵션과 기본값을 포함하여 [main] 섹션의 모든 설정을 표시할 수 있습니다.

절차

  • 글로벌 DNF 구성을 표시합니다.

    # dnf config-manager --dump

추가 리소스

  • dnf.conf(5) 도움말 페이지

3.2. DNF 기본 옵션 설정

/etc/dnf/dnf.conf 파일에는 하나의 [main] 섹션이 포함되어 있습니다. 이 섹션의 키-값 쌍은 DNF 가 리포지토리를 작동하고 처리하는 방식에 영향을 미칩니다.

절차

  1. /etc/dnf/dnf.conf 파일을 편집합니다.
  2. 요구 사항에 따라 [main] 섹션을 업데이트합니다.
  3. 변경 사항을 저장합니다.

추가 리소스

  • dnf.conf(5) 도움말 페이지의 [main] 및 OPTIONS FOR BOTH [main] 및 REPO 섹션.

3.3. DNF 플러그인 관리

설치된 모든 플러그인은 /etc/dnf/plugins/ 디렉터리에 고유한 구성 파일을 가질 수 있습니다. 이 디렉터리의 이름 플러그인 구성 파일 < plug-in_name> . conf .conf 기본적으로 플러그인은 일반적으로 활성화됩니다. 이러한 구성 파일 중 하나에서 플러그인을 비활성화하려면 파일에 다음을 추가합니다.

[main]
enabled=False

3.4. DNF 플러그인 활성화 및 비활성화

DNF 툴에서는 기본적으로 플러그인이 로드됩니다. 그러나 어떤 플러그인 DNF 로드에 영향을 줄 수 있습니다.

주의

잠재적인 문제를 진단하기 위해서만 모든 플러그인을 비활성화합니다. DNF 에는 product-idsubscription-manager 와 같은 특정 플러그인이 필요하며 이를 비활성화하면 Red Hat Enterprise Linux가 CDN(Content Delivery Network)에서 소프트웨어를 설치하거나 업데이트할 수 없습니다.

절차

  • 다음 방법 중 하나를 사용하여 DNF 가 플러그인을 사용하는 방법에 영향을 미칩니다.

    • DNF 플러그인 로드를 전역적으로 활성화하거나 비활성화하려면 plugins 매개변수를 /etc/dnf/dnf.conf 파일의 [main] 섹션에 추가합니다.

      • plugins=1 (기본값)을 설정하여 모든 DNF 플러그인을 로드할 수 있습니다.
      • plugins=0 을 설정하여 모든 DNF 플러그인 로드를 비활성화합니다.
    • 특정 플러그인을 비활성화하려면 /etc/dnf/plugins/ <plug-in_name > .conf 파일의 [main] 섹션에 enabled=False 를 추가합니다.
    • 특정 명령의 모든 DNF 플러그인을 비활성화하려면 명령에 --noplugins 옵션을 추가합니다. 예를 들어 단일 업데이트 명령에 대해 DNF 플러그인을 비활성화하려면 다음을 입력합니다.

      # dnf --noplugins update
    • 단일 명령에 대해 특정 DNF 플러그인을 비활성화하려면 명령에 --disableplugin=plugin-name 옵션을 추가합니다. 예를 들어 단일 업데이트 명령에 대해 특정 DNF 플러그인을 비활성화하려면 다음을 입력합니다.

      # dnf update --disableplugin=<plugin_name>
    • 단일 명령에 특정 DNF 플러그인을 활성화하려면 명령에 --enableplugin=plugin-name 옵션을 추가합니다. 예를 들어 단일 업데이트 명령에 특정 DNF 플러그인을 활성화하려면 다음을 입력합니다.

      # dnf update --enableplugin=<plugin_name>

4장. RHEL 9 콘텐츠 검색

다음 섹션에서 DNF 를 사용하여 Red Hat Enterprise Linux 9의 AppStream 및 BaseOS 리포지토리에서 콘텐츠를 찾고 검사하는 방법을 알아봅니다.

4.1. 소프트웨어 패키지 검색

필요한 소프트웨어를 제공하는 패키지를 식별하기 위해 DNF 를 사용하여 리포지토리를 검색할 수 있습니다.

절차

  • 시나리오에 따라 다음 옵션 중 하나를 사용하여 리포지토리를 검색합니다.

    • 패키지 이름 또는 요약에서 용어를 검색하려면 다음을 입력합니다.

      $ dnf search <term>
    • 패키지 이름, 요약 또는 설명에서 용어를 검색하려면 다음을 입력합니다.

      $ dnf search --all <term>

      --all 옵션을 사용하여 설명에서 추가로 검색하는 것은 일반적인 검색 작업보다 느립니다.

    • 패키지 이름을 검색하고 출력에 패키지 이름과 해당 버전을 나열하려면 다음을 입력합니다.

      $ dnf repoquery <package_name>
    • 파일을 제공하는 패키지를 검색하려면 파일 이름 또는 파일의 경로를 지정합니다.

      $ dnf provides <file_name>

4.2. 소프트웨어 패키지 나열

DNF 를 사용하여 리포지토리에서 사용할 수 있는 패키지 및 해당 버전 목록을 표시할 수 있습니다. 필요한 경우 이 목록을 필터링할 수 있으며, 예를 들어 사용 가능한 업데이트의 패키지만 나열할 수 있습니다.

절차

  • 아키텍처, 버전 번호, 설치 위치 리포지토리를 포함하여 사용 가능한 모든 패키지의 최신 버전을 나열합니다.

    $ dnf list --all
    ...
    zlib.x86_64         1.2.11-39.el9   @rhel-9-for-x86_64-baseos-rpms
    zlib.i686           1.2.11-39.el9   rhel-9-for-x86_64-baseos-rpms
    zlib-devel.i686     2.11-39.el9     rhel-9-for-x86_64-appstream-rpms
    zlib-devel.x86_64   1.2.11-39.el9   rhel-9-for-x86_64-appstream-rpms
    ...

    리포지토리 앞의 @ 기호는 이 행의 패키지가 현재 설치되어 있음을 나타냅니다.

    또는 버전 번호 및 아키텍처를 포함하여 사용 가능한 모든 패키지를 표시하려면 다음을 입력합니다.

    $ dnf repoquery
    ...
    zlib-0:1.2.11-35.el9_1.i686
    zlib-0:1.2.11-35.el9_1.x86_64
    zlib-0:1.2.11-39.el9.i686
    zlib-0:1.2.11-39.el9.x86_64
    zlib-devel-0:1.2.11-39.el9.i686
    zlib-devel-0:1.2.11-39.el9.x86_64
    ...

    선택적으로 --all 대신 다른 옵션을 사용하여 출력을 필터링할 수 있습니다. 예를 들면 다음과 같습니다.

    • 설치된 패키지만 나열하려면 -- installed 를 사용합니다.
    • 사용 가능한 모든 패키지를 나열하려면 --available 을 사용합니다.
    • --upgrades 를 사용하여 최신 버전을 사용할 수 있는 패키지를 나열합니다.
    참고

    전역 표현식을 인수로 추가하여 결과를 필터링할 수 있습니다. 자세한 내용은 DNF 입력에서 글로벌 표현식 지정 을 참조하십시오.

4.3. 리포지토리 나열

시스템에서 활성화 및 비활성화된 리포지토리의 개요를 보려면 나열할 수 있습니다.

절차

  1. 시스템에서 활성화된 모든 리포지토리를 나열합니다.

    $ dnf repolist

    특정 리포지토리만 표시하려면 다음 옵션 중 하나를 명령에 추가합니다.

    • 비활성화된 리포지토리만 나열하려면 --disabled 를 추가합니다.
    • 활성화된 리포지토리와 비활성화된 리포지토리를 모두 나열하려면 --all 을 추가합니다.
  2. 선택 사항: 리포지토리에 대한 추가 정보를 나열합니다.

    $ dnf repoinfo <repository_name>
    참고

    글로벌 표현식을 사용하여 결과를 필터링할 수 있습니다. 자세한 내용은 DNF 입력에서 글로벌 표현식 지정 을 참조하십시오.

4.4. 패키지 정보 표시

DNF 리포지터리를 쿼리하여 다음과 같은 패키지에 대한 추가 세부 정보를 표시할 수 있습니다.

  • 버전
  • 릴리스 버전
  • 아키텍처
  • 패키지 크기
  • 설명

절차

  • 하나 이상의 사용 가능한 패키지에 대한 정보를 표시합니다.

    $ dnf info <package_name>

    이 명령은 현재 설치된 패키지에 대한 정보와 사용 가능한 경우 리포지토리에 있는 최신 버전의 정보를 표시합니다. 또는 다음 명령을 사용하여 리포지토리에 지정된 이름의 모든 패키지에 대한 정보를 표시합니다.

    $ dnf repoquery --info <package_name>
    참고

    전역 표현식을 인수로 추가하여 결과를 필터링할 수 있습니다. 자세한 내용은 DNF 입력에서 글로벌 표현식 지정 을 참조하십시오.

4.5. 제공하는 패키지 그룹 및 패키지 나열

패키지 그룹은 여러 패키지를 번들하며 패키지 그룹을 사용하여 단일 단계에서 그룹에 할당된 모든 패키지를 설치할 수 있습니다. 그러나 설치 전에 필요한 패키지 그룹의 이름을 식별해야 합니다.

절차

  1. 설치된 그룹과 사용 가능한 그룹을 모두 나열합니다.

    $ dnf group list

    dnf group list 명령에 --installed--available 옵션을 추가하여 결과를 필터링할 수 있습니다. --hidden 옵션을 사용하면 출력에 숨겨진 그룹을 표시할 수 있습니다.

  2. 특정 그룹에 포함된 필수, 선택 사항 및 기본 패키지를 나열합니다.

    $ dnf group info "<group_name>"
    참고

    전역 표현식을 인수로 추가하여 결과를 필터링할 수 있습니다. 자세한 내용은 DNF 입력에서 글로벌 표현식 지정 을 참조하십시오.

  3. 선택 사항: 설치되어 사용 가능한 그룹 수를 확인합니다.

    $ dnf group summary

4.6. 사용 가능한 모듈 및 콘텐츠 나열

모듈을 검색하고 DNF 를 사용하여 표시하면 리포지토리에서 사용할 수 있는 모듈을 식별하고 모듈을 설치하기 전에 적절한 스트림을 선택할 수 있습니다.

절차

  1. 다음 방법 중 하나로 모듈 정보를 나열합니다.

    • 사용 가능한 모든 모듈을 나열합니다.

      $ dnf module list
      Name        Stream   Profiles                               Summary
      ...
      nodejs      18       common [d], development, minimal, s2i  Javascript runtime
      postgresql  15       client, server                         PostgreSQL server and client module
      ...
      Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

      dnf 모듈 목록 & lt;module_name > 명령을 사용하여 특정 모듈에 대해서만 동일한 정보를 나열합니다.

    • 특정 패키지를 제공하는 모듈을 검색합니다.

      $ dnf module provides <package_name>

      예를 들어 npm 패키지를 제공하는 모듈과 프로필을 표시하려면 다음을 입력합니다.

      # dnf module provides npm
      npm-1:8.19.2-1.18.10.0.3.module+el9.1.0+16866+0fab0697.x86_64
      Module   : nodejs:18:9010020221009220316:rhel9:x86_64
      Profiles : common development s2i
      Repo     : rhel-9-for-x86_64-appstream-rpms
      Summary  : Javascript runtime
      ...
  2. 다음 방법 중 하나를 사용하여 모듈 세부 정보를 나열합니다.

    • 설명, 모든 프로필 목록, 모듈에서 제공하는 모든 패키지 목록을 포함하여 모듈에 대한 모든 세부 정보를 나열합니다.

      $ dnf module info <module_name>

      예를 들어 nodejs 패키지에 대한 세부 정보를 표시하려면 다음을 입력합니다.

      $ dnf module info nodejs
      Name             : nodejs
      Stream           : 18
      Version          : 9010020221009220316
      Context          : rhel9
      Architecture     : x86_64
      Profiles         : common [d], development, minimal, s2i
      Default profiles : common
      Repo             : rhel-9-for-x86_64-appstream-rpms
      Summary          : Javascript runtime
      Description      : Node.js is a platform built on Chrome's JavaScript runtime...
      Requires         : platform:[el9]
      Artifacts        : nodejs-1:18.10.0-3.module+el9.1.0+16866+0fab0697.src
                       : nodejs-1:18.10.0-3.module+el9.1.0+16866+0fab0697.x86_64
                       : npm-1:8.19.2-1.18.10.0.3.module+el9.1.0+16866+0fab0697.x86_64
      ...
    • 각 모듈 프로파일이 설치하는 패키지를 나열합니다.

      $ dnf module info --profile <module_name>

      예를 들어 nodejs 모듈에 대한 이 정보를 표시하려면 다음을 입력합니다.

      $ dnf module info --profile nodejs
      Name        : nodejs:18:9010020221009220316:rhel9:x86_64
      common      : nodejs
                  : npm
      development : nodejs
                  : nodejs-devel
                  : npm
      minimal     : nodejs
      s2i         : nodejs
                  : nodejs-nodemon
                  : npm
      ...

4.7. DNF 입력에 글로벌 표현식 지정

하나 이상의 글로벌 표현식을 인수로 추가하여 dnf 명령의 결과를 필터링할 수 있습니다.

절차

  • dnf 명령에서 전역 표현식을 사용하는 경우 다음 방법 중 하나를 사용합니다.

    • 전체 global 표현식을 단일 또는 이중 따옴표로 묶습니다.

      # dnf provides "*/<file_name>"

      절대 경로의 경우 / 또는 전체 경로가 알 수 없는 경우 와일드카드를 사용하려면 < file_name > 앞에 <file_name>을 지정해야 합니다.

    • 뒤에 백슬래시(\) 문자를 사용하여 와일드카드 문자이스케이프합니다.

      # dnf provides \*/<file_name>

4.8. 추가 리소스

5장. RHEL 9 콘텐츠 설치

다음 섹션에서 DNF 를 사용하여 Red Hat Enterprise Linux 9에 콘텐츠를 설치하는 방법을 알아봅니다.

5.1. 패키지 설치

소프트웨어가 기본 설치에 포함되지 않은 경우 수동으로 설치할 수 있습니다. DNF 는 종속성을 자동으로 해결하고 설치합니다.

사전 요구 사항

절차

  • 다음 방법 중 하나를 사용하여 패키지를 설치합니다.

    • 리포지토리에서 패키지를 설치하려면 다음을 입력합니다.

      # dnf install <package_name_1> <package_name_2> ...

      i686x86_64 와 같은 여러 아키텍처를 지원하는 시스템에 패키지를 설치하는 경우 패키지 이름에 패키지를 추가하여 패키지의 아키텍처를 지정할 수 있습니다.

      # dnf install <package_name>.<architecture>
    • 패키지가 제공하는 파일의 경로만 알고 있지만 패키지 이름이 아닌 경우에만 패키지를 설치하려면 이 경로를 사용하여 해당 패키지를 설치할 수 있습니다.

      # dnf install <path_to_file>
    • 로컬 RPM 파일을 설치하려면 다음을 입력합니다.

      # dnf install <path_to_RPM_file>

      패키지에 종속 항목이 있는 경우 이러한 RPM 파일의 경로도 지정합니다. 그렇지 않으면 DNF 가 리포지토리에서 종속성을 다운로드하거나 리포지토리에서 사용할 수 없는 경우 실패합니다.

추가 리소스

5.2. 패키지 그룹 설치

패키지 그룹은 여러 패키지를 번들하며 패키지 그룹을 사용하여 단일 단계에서 그룹에 할당된 모든 패키지를 설치할 수 있습니다.

사전 요구 사항

절차

  • 패키지 그룹을 설치합니다.

    # dnf group install <group_name_or_ID>

5.3. 모듈식 콘텐츠 설치

특정 소프트웨어의 경우 Red Hat은 모듈을 제공합니다. 모듈을 사용하여 특정 버전(스트림) 및 패키지 집합(프로파일)을 설치할 수 있습니다.

절차

  1. 설치할 패키지를 제공하는 모듈을 나열합니다.

    # dnf module list <module_name>

    예를 들어 nodejs 모듈에 대한 세부 정보를 나열하려면 다음을 입력합니다.

    # dnf module list nodejs
    Name     Stream   Profiles                                Summary
    nodejs   18       common [d], development, minimal, s2i   Javascript runtime
    nodejs   ...      common [d], development, minimal, s2i   Javascript runtime
    
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
  2. 모듈을 설치합니다.

    # dnf module install <module_name>:<stream>/<profile>

    스트림의 기본 프로필이 정의된 경우 명령에서 / <profile >을 생략하여 스트림의 이 기본 프로필을 설치할 수 있습니다.

    참고

    Red Hat Enterprise Linux 9에서는 기본 모듈 스트림이 사전 정의되어 있지 않습니다. 그러나 표시된 대로 모듈 설치 중에 스트림을 지정하는 경우 스트림을 사전에 수동으로 활성화할 필요가 없습니다.

    예를 들어 nodejs 모듈의 스트림 18 에서 기본 프로필(일반)을 설치하려면 다음을 입력합니다.

    # dnf module install nodejs:18
    =====================================================================================================
     Package                            Architecture   Version   Repository                          Size
    =====================================================================================================
    Installing group/module packages:
     nodejs                             x86_64         ...       rhel-9-for-x86_64-appstream-rpms    12 M
     npm                                x86_64         ...       rhel-9-for-x86_64-appstream-rpms   2.5 M
    Installing weak dependencies:
     nodejs-docs                        noarch         ..        rhel-9-for-x86_64-appstream-rpms   7.6 M
     nodejs-full-i18n                   x86_64         ..        rhel-9-for-x86_64-appstream-rpms   8.4 M
    Installing module profiles:
     nodejs/common
    Enabling module streams:
     nodejs                                            18

검증

  • 올바른 모듈 스트림이 활성화되고 필요한 프로파일이 설치되어 있는지 확인합니다([i]).

    # dnf module list nodejs
    Updating Subscription Management repositories.
    Last metadata expiration check: 0:33:24 ago on Mon 24 Jul 2023 04:59:01 PM CEST.
    Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs)
    Name     Stream   Profiles                                    Summary
    nodejs   18 [e]   common [d] [i], development, minimal, s2i   Javascript runtime
    ...
    
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

5.4. 사용자 정의 기본 모듈 스트림 및 프로필 정의

Red Hat Enterprise Linux 9는 AppStream 리포지토리에서 기본 스트림을 정의하지 않습니다. 그러나 기본 모듈 스트림 및 기본 모듈 프로필을 구성할 수 있습니다. 이 경우 모듈의 기본 스트림 및 프로필을 설치할 때 이 정보를 생략할 수 있습니다.

절차

  1. dnf 모듈 목록 < module_name > 명령을 사용하여 사용 가능한 스트림 및 해당 프로필을 표시합니다. 예를 들면 다음과 같습니다.

    # dnf module list nodejs
    Name     Stream   Profiles                                Summary
    nodejs   18       common [d], development, minimal, s2i   Javascript runtime

    이 예에서 nodejs:18 은 기본 스트림으로 설정되지 않으며 이 스트림의 기본 프로필은 일반적입니다.

  2. /etc/dnf/modules.defaults.d/ 디렉터리에 YAML 파일을 생성하여 모듈에 대한 기본 스트림 및 프로필을 정의합니다.

    예를 들어 다음 콘텐츠를 사용하여 /etc/dnf/modules.defaults.d/nodejs.yaml 파일을 생성하여 18 을 기본 스트림으로 정의하고 nodejs 모듈의 기본 프로필로 최소 값을 정의합니다.

    document: modulemd-defaults
    version: 1
    data:
      module: nodejs
      stream: "18"
      profiles:
          '18': [minimal]

검증

  • dnf 모듈 목록 < module_name > 명령을 사용하여 새 기본 스트림 및 프로필 설정을 확인합니다. 예를 들면 다음과 같습니다.

    # dnf module list nodejs
    Name     Stream   Profiles                                Summary
    nodejs   18 [d]   common, development, minimal [d], s2i   Javascript runtime

5.5. 추가 리소스

6장. RHEL 9 콘텐츠 업데이트

DNF 를 사용하면 시스템에 보류 중인 업데이트가 있는지 확인할 수 있습니다. 업데이트가 필요한 패키지를 나열하고 단일 패키지, 여러 패키지 또는 모든 패키지를 한 번에 업데이트하도록 선택할 수 있습니다. 업데이트할 패키지에 종속성이 있는 경우 이러한 종속성도 업데이트됩니다.

6.1. 업데이트 확인

시스템에 설치된 패키지가 사용 가능한 업데이트를 식별하려면 나열할 수 있습니다.

절차

  • 설치된 패키지에 대해 사용 가능한 업데이트를 확인합니다.

    # dnf check-update

    출력에는 사용 가능한 업데이트가 있는 패키지 목록 및 해당 종속 항목이 반환됩니다.

6.2. 패키지 업데이트

DNF 를 사용하여 단일 패키지, 패키지 그룹 또는 모든 패키지와 해당 종속 항목을 한 번에 업데이트할 수 있습니다.

중요

업데이트를 커널에 적용할 때 dnf upgrade 또는 dnf install 명령을 사용 중인지 여부에 관계없이 항상 새 커널을 설치합니다. 이는 installonlypkgs DNF 구성 옵션을 사용하여 식별된 패키지에만 적용됩니다. 이러한 패키지에는 커널 , kernel -core, kernel-modules 패키지가 포함됩니다.

절차

  • 시나리오에 따라 다음 옵션 중 하나를 사용하여 업데이트를 적용합니다.

    • 모든 패키지 및 해당 종속 항목을 업데이트하려면 다음을 입력합니다.

      # dnf upgrade
    • 단일 패키지를 업데이트하려면 다음을 입력합니다.

      # dnf upgrade <package_name>
    • 특정 패키지 그룹에서만 패키지를 업데이트하려면 다음을 입력합니다.

      # dnf group upgrade <group_name>
중요

BIOS 또는 IBM Power 시스템에서 GRUB 부트 로더 패키지를 업그레이드한 경우 GRUB을 다시 설치하십시오. GRUB 재설치를 참조하십시오.

7장. RHEL 9에서 소프트웨어 업데이트 자동화

DNF 자동 은 systemd 타이머, cron 작업 및 기타 이러한 툴을 사용하여 자동 및 정기 실행에 적합한 DNF 명령줄 인터페이스입니다.

DNF는 필요에 따라 패키지 메타데이터를 자동으로 동기화하고, 사용 가능한 업데이트를 확인한 다음 툴 구성 방법에 따라 다음 작업 중 하나를 수행합니다.

  • exit
  • 업데이트된 패키지 다운로드
  • 업데이트 다운로드 및 적용

그런 다음 작업 결과는 표준 출력 또는 이메일과 같은 선택한 메커니즘에 의해 보고됩니다.

7.1. DNF 자동 설치

패키지 업데이트를 자동으로 확인하고 다운로드하려면 dnf-automatic 패키지에서 제공하는 DNF 자동 도구를 사용할 수 있습니다.

절차

  • dnf-automatic 패키지를 설치합니다.

    # dnf install dnf-automatic

검증

  • dnf-automatic 패키지가 있는지 확인하여 설치에 성공했는지 확인합니다.

    # rpm -qi dnf-automatic

7.2. dnf 자동 구성 파일

기본적으로 DNF Automatic/etc/dnf/automatic.conf 를 구성 파일로 사용하여 동작을 정의합니다.

구성 파일은 다음 주제 섹션으로 구분됩니다.

  • [명령]

    DNF 자동 작동 모드를 설정합니다.

    주의

    [commands] 섹션의 작업 모드 설정은 dnf-automatic.timer 를 제외한 모든 타이머 장치에 대해 systemd 타이머 장치에서 사용하는 설정에 의해 재정의됩니다.

  • [emitter]

    DNF 자동 결과를 보고하는 방법을 정의합니다.

  • [command]

    명령 emitter 구성을 정의합니다.

  • [command_email]

    이메일을 보내는 데 사용되는 외부 명령의 이메일 발송기 구성을 제공합니다.

  • [email]

    이메일 발송기 구성을 제공합니다.

  • [base]

    DNF 의 기본 구성 파일의 설정을 재정의합니다.

/etc/dnf/automatic.conf 파일의 기본 설정으로 DNF 자동 에서 사용 가능한 업데이트를 확인하고 다운로드한 후 결과를 표준 출력에 보고합니다.

추가 리소스

7.3. DNF 자동 활성화

DNF 자동 을 한 번 실행하려면 systemd 타이머 장치를 시작해야 합니다. 그러나 DNF 자동 을 주기적으로 실행하려면 타이머 장치를 활성화해야 합니다. dnf-automatic 패키지에 제공된 타이머 장치 중 하나를 사용하거나 타이머 장치에 대한 드롭인 파일을 만들어 실행 시간을 조정할 수 있습니다.

사전 요구 사항

  • /etc/dnf/automatic.conf 구성 파일을 수정하여 DNF 자동 동작을 지정했습니다.

절차

  • systemd 타이머 장치를 즉시 활성화하고 실행하려면 다음을 입력합니다.

    # systemctl enable --now <timer_name>

    즉시 실행하지 않고 타이머만 활성화하려면 --now 옵션을 생략합니다.

    다음 타이머를 사용할 수 있습니다.

    • dnf-automatic-download.timer: 사용 가능한 업데이트를 다운로드합니다.
    • dnf-automatic-install.timer: 사용 가능한 업데이트를 다운로드하여 설치합니다.
    • dnf-automatic-notifyonly.timer: 사용 가능한 업데이트 보고서.
    • dnf-automatic.timer: 다운로드, 다운로드 및 설치 또는 사용 가능한 업데이트를 보고합니다.

검증

  • 타이머가 활성화되어 있는지 확인합니다.

    # systemctl status <systemd timer unit>
  • 선택 사항: 시스템의 각 타이머가 마지막으로 실행된 시기를 확인합니다.

    # systemctl list-timers --all

추가 리소스

7.4. dnf-automatic 패키지에 포함된 systemd 타이머 장치 개요

systemd 타이머 단위는 우선 순위를 두고 업데이트를 다운로드하고 적용할 때 /etc/dnf/automatic.conf 구성 파일의 설정을 재정의합니다.

예를 들어 /etc/dnf/automatic.conf 구성 파일에 download_updates = yes 를 설정했지만 dnf-automatic-notifyonly.timer 장치를 활성화한 경우 패키지가 다운로드되지 않습니다.

표 7.1. dnf-automatic 패키지에 포함된 systemd 타이머

타이머 장치함수/etc/dnf/automatic.conf 파일의 [commands] 섹션에서 apply_updatesdownload_updates 설정을 덮어씁니다.

dnf-automatic-download.timer

패키지를 캐시로 다운로드하여 업데이트할 수 있도록 합니다.

이 타이머 장치는 업데이트된 패키지를 설치하지 않습니다. 설치를 수행하려면 dnf update 명령을 실행해야 합니다.

있음

dnf-automatic-install.timer

업데이트된 패키지를 다운로드하여 설치합니다.

있음

dnf-automatic-notifyonly.timer

리포지토리 캐시를 최신 상태로 유지하고 사용 가능한 업데이트에 대해 알리는 리포지토리 데이터만 다운로드합니다.

이 타이머 장치는 업데이트된 패키지를 다운로드하거나 설치하지 않습니다.

있음

dnf-automatic.timer

업데이트를 다운로드하고 적용할 때 이 타이머의 동작은 /etc/dnf/automatic.conf 구성 파일의 설정에 의해 지정됩니다.

이 타이머는 패키지를 다운로드하지만 설치하지 않습니다.

없음

8장. RHEL 9 콘텐츠 제거

다음 섹션에서 DNF 를 사용하여 Red Hat Enterprise Linux 9의 콘텐츠를 제거하는 방법을 알아봅니다.

8.1. 설치된 패키지 제거

DNF 를 사용하여 시스템에 설치된 단일 패키지 또는 여러 패키지를 제거할 수 있습니다. 제거하도록 선택한 패키지에는 사용되지 않는 종속 항목이 있는 경우 DNF 도 이러한 종속 항목을 제거합니다.

절차

  • 특정 패키지를 제거합니다.

    # dnf remove <package_name_1> <package_name_2> ...

8.2. 패키지 그룹 제거

패키지 그룹은 여러 패키지를 번들로 제공합니다. 패키지 그룹을 사용하여 단일 단계에서 그룹에 할당된 모든 패키지를 제거할 수 있습니다.

절차

  • 그룹 이름 또는 그룹 ID로 패키지 그룹을 제거합니다.

    # dnf group remove <group_name> <group_id>

8.3. 설치된 모듈식 콘텐츠 제거

설치된 모듈식 콘텐츠를 제거할 때 선택한 프로필 또는 전체 스트림에서 패키지를 제거할 수 있습니다.

중요

DNF 는 종속 패키지를 포함하여 프로필 또는 스트림과 함께 설치된 패키지에 해당하는 이름이 있는 모든 패키지를 제거하려고 합니다. 특히 시스템에서 사용자 지정 리포지토리를 활성화한 경우 계속 진행하기 전에 제거할 패키지 목록을 항상 확인합니다.

8.3.1. 설치된 프로필에서 패키지 제거

프로필과 함께 설치된 패키지를 제거하면 프로필이 설치한 패키지에 해당하는 이름이 있는 모든 패키지가 제거됩니다. 여기에는 다른 프로필에 필요한 패키지를 제외하고 종속 항목이 포함됩니다.

선택한 스트림에서 모든 패키지를 제거하려면 모듈 스트림에서 모든 패키지 제거 단계를 완료합니다.

사전 요구 사항

  • 선택한 프로필은 dnf 모듈 install < module-name:stream/profile > 명령을 사용하거나 dnf install < module-name:stream command >을 사용하여 기본 프로필로 설치됩니다.

절차

  • 선택한 프로필에 속하는 패키지를 제거합니다.

    # dnf module remove <module-name:stream/profile>

    예를 들어 nodejs:18 모듈 스트림의 개발 프로필에서 패키지 및 해당 종속성을 제거하려면 다음을 입력합니다.

    # dnf module remove nodejs:18/development
    (...)
    Dependencies resolved.
    ========================================================================
    Package          Architecture   Version
      Repository       Size
    ========================================================================
    Removing:
    nodejs-devel     x86_64         1:18.7.0-1.module+el9.1.0+16284+4fdefb2f
      @rhel-AppStream  950 k
    Removing unused dependencies:
    brotli           x86_64         1.0.9-6.el9
      @rhel-AppStream  754 k
    brotli-devel     x86_64         1.0.9-6.el9
      @rhel-AppStream  55 k
    ...
    Disabling module profiles:
    nodejs/development
    
    Transaction Summary
    ========================================================================
    Remove  26 Packages
    
    Freed space: 8.3 M
    Is this ok [y/N]: y
    주의

    제거 대상에서 패키지 목록을 확인하고 사용되지 않은 종속성을 제거하는 방법: 제거 트랜잭션을 진행하기 전에 다음을 수행합니다. 이 트랜잭션은 요청된 패키지, 사용되지 않는 종속 패키지 및 종속 패키지를 제거하여 시스템에 오류가 발생할 수 있습니다.

    또는 스트림 내 설치된 모든 프로필에서 패키지를 설치 제거합니다.

    # dnf module remove module-name:stream
    참고

    이러한 작업은 프로필에 속하지 않는 스트림에서 패키지를 제거하지 않습니다.

검증

  • 올바른 프로필이 제거되었는지 확인합니다.

    $ dnf module info nodejs
    ...
    Name             : nodejs
    Stream           : 18 [e] [a]
    Version          : 9010020221009220316
    Context          : rhel9
    Architecture     : x86_64
    Profiles         : common [d] [i], development, minimal [i], s2i [i]
    Default profiles : common
    Repo             : rhel-AppStream
    Summary          : Javascript runtime
    ...
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive

    개발을 제외한 모든 프로파일은 현재 설치되어 있습니다([i]).

8.3.2. 모듈 스트림에서 모든 패키지 제거

모듈 스트림으로 설치된 패키지를 제거하면 스트림에서 설치한 패키지에 해당하는 이름이 있는 모든 패키지가 제거됩니다. 여기에는 다른 모듈에 필요한 패키지를 제외하고 종속 항목이 포함됩니다.

선택한 프로필에서 패키지만 제거하려면 설치된 프로필에서 패키지 제거 단계를 완료합니다.

사전 요구 사항

  • 모듈 스트림이 활성화되고 스트림의 일부 패키지가 설치되었습니다.

절차

  1. 선택한 스트림에서 모든 패키지를 삭제합니다.

    # dnf module remove --all <module_name:stream>

    예를 들어 nodejs:18 모듈 스트림에서 모든 패키지를 제거하려면 다음을 입력합니다.

    # dnf module remove --all nodejs:18
    (...)
    Dependencies resolved.
    ===================================================================================
    Package          Architecture   Version
      Repository       Size
    ===================================================================================
    Removing:
    nodejs           x86_64         1:18.10.0-3.module+el9.1.0+16866+0fab0697
      @rhel-AppStream  43 M
    nodejs-devel     x86_64         1:18.10.0-3.module+el9.1.0+16866+0fab0697
      @rhel-AppStream  953 k
    nodejs-docs      noarch         1:18.10.0-3.module+el9.1.0+16866+0fab0697
      @rhel-AppStream  78 M
    nodejs-full-i18n x86_64         1:18.10.0-3.module+el9.1.0+16866+0fab0697
      @rhel-AppStream  29 M
    nodejs-nodemon   noarch         2.0.15-1.module+el9.1.0+15718+e52ec601
      @rhel-AppStream  2.0 M
    nodejs-packaging noarch         2021.06-4.module+el9.1.0+15718+e52ec601
      @rhel-AppStream  41 k
    npm              x86_64         1:8.19.2-1.18.10.0.3.module+el9.1.0+16866+0fab0697
      @rhel-AppStream  6.9 M
    Removing unused dependencies:
    brotli           x86_64         1.0.9-6.el9
      @rhel-AppStream  754 k
    brotli-devel     x86_64         1.0.9-6.el9
      @rhel-AppStream  55 k
    ...
    Disabling module profiles:
    nodejs/common
    nodejs/development
    nodejs/minimal
    nodejs/s2i
    
    
    Transaction Summary
    ===================================================================================
    Remove  31 Packages
    
    Freed space: 167 M
    Is this ok [y/N]: y
    주의

    제거 대상에서 패키지 목록을 확인하고 사용되지 않은 종속성을 제거하는 방법: 제거 트랜잭션을 진행하기 전에 다음을 수행합니다. 이 트랜잭션은 요청된 패키지, 사용되지 않는 종속 패키지 및 종속 패키지를 제거하여 시스템에 오류가 발생할 수 있습니다.

  2. 선택 사항: 다음 명령 중 하나를 입력하여 스트림을 재설정하거나 비활성화합니다.

    # dnf module reset <module_name>
    # dnf module disable <module_name>

검증

  • 선택한 모듈 스트림의 모든 패키지가 제거되었는지 확인합니다.

    $ dnf module info nodejs
    ...
    Name             : nodejs
    Stream           : 18 [e] [a]
    Version          : 9010020221009220316
    Context          : rhel9
    Architecture     : x86_64
    Profiles         : common [d], development, minimal, s2i
    Default profiles : common
    ...
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled, [a]ctive

8.4. 추가 리소스

9장. 패키지 관리 내역 처리

dnf history 명령을 사용하면 다음 정보를 확인할 수 있습니다.

  • DNF 트랜잭션 타임라인.
  • 트랜잭션이 발생한 날짜 및 시간입니다.
  • 트랜잭션의 영향을 받는 패키지 수입니다.
  • 트랜잭션이 성공했는지 또는 중단되었는지 여부입니다.
  • RPM 데이터베이스가 트랜잭션 간에 변경된 경우

dnf history 명령을 사용하여 트랜잭션을 취소할 수도 있습니다.

9.1. 트랜잭션 나열

DNF 를 사용하여 다음 작업을 수행할 수 있습니다.

  • 최신 트랜잭션을 나열합니다.
  • 선택한 패키지의 최신 작업을 나열합니다.
  • 특정 트랜잭션의 세부 정보를 표시합니다.

절차

  • 시나리오에 따라 다음 옵션 중 하나를 사용하여 트랜잭션 정보를 표시합니다.

    • 모든 최신 DNF 트랜잭션 목록을 표시하려면 다음을 입력합니다.

      # dnf history

      출력에는 다음 정보가 포함됩니다.

      • Action(s) 열에는 트랜잭션 중에 수행된 작업 유형(예: Install(I), Upgrade(U)), Remove(E) 및 기타 작업이 표시됩니다.
      • 대체 열에 는 트랜잭션 중에 수행된 작업 수가 표시됩니다. 작업 수에도 트랜잭션 결과가 올 수 있습니다.

        Action(s)Altered 열의 값에 대한 자세한 내용은 dnf(8) 도움말 페이지를 참조하십시오.

    • 선택한 패키지에 대한 모든 최신 작업 목록을 표시하려면 다음을 입력합니다.

      # dnf history list <package_name>
    • 특정 트랜잭션의 세부 정보를 표시하려면 다음을 입력합니다.

      # dnf history info <transaction_id>
참고

전역 표현식을 인수로 추가하여 결과를 필터링할 수 있습니다. 자세한 내용은 dnf 입력에서 전역 표현식 지정 을 참조하십시오.

추가 리소스

  • dnf(8) 도움말 페이지

9.2. DNF 트랜잭션 복원

DNF 트랜잭션을 되돌리는 것은 트랜잭션 중에 수행된 작업을 실행 취소하려는 경우 유용할 수 있습니다. 예를 들어 dnf install 명령을 사용하여 여러 패키지를 설치한 경우 설치 트랜잭션을 되돌리면 이러한 패키지를 한 번에 제거할 수 있습니다.

다음과 같은 방법으로 DNF 트랜잭션을 되돌릴 수 있습니다.

  • dnf history undo 명령을 사용하여 단일 DNF 트랜잭션을 되돌립니다.
  • dnf history rollback 명령을 사용하여 지정된 트랜잭션과 마지막 트랜잭션 간에 수행된 모든 DNF 트랜잭션을 되돌립니다.
중요

dnf history undodnf history rollback 명령을 사용하여 RHEL 시스템 패키지를 이전 버전으로 다운그레이드할 수 없습니다. 이는 특히 selinux , selinux -policy-*, kernel, glibc 패키지 및 gcc 와 같은 glibc 종속 항목과 관련이 있습니다. 따라서 시스템을 마이너 버전(예: RHEL 9.1에서 RHEL 9.0으로 다운그레이드)으로 다운그레이드하는 것은 시스템을 잘못된 상태로 둘 수 있기 때문에 권장되지 않습니다.

9.2.1. 단일 DNF 트랜잭션 되돌리기

dnf history undo 명령을 사용하여 단일 트랜잭션 내에서 수행된 단계를 되돌릴 수 있습니다.

  • 트랜잭션이 새 패키지를 설치한 경우 dnf history 실행 취소 하면 패키지를 제거합니다.
  • 패키지가 제거되면 dnf history undo s the package를 다시 설치합니다.
  • 이전 패키지를 계속 사용할 수 있는 경우 dnf history undo 명령은 업데이트된 모든 패키지를 이전 버전으로 다운그레이드하려고 합니다.

    참고

    이전 패키지 버전을 사용할 수 없는 경우 dnf history undo 명령을 사용하여 다운그레이드가 실패합니다.

절차

  1. 되돌리려는 트랜잭션의 ID를 확인합니다.

    # dnf history
    ID | Command line     | Date and time     | Action(s)      | Altered
    --------------------------------------------------------------------
    13 | install zip      | 2022-11-03 10:49  | Install        |    1
    12 | install unzip    | 2022-11-03 10:49  | Install        |    1
  2. 선택 사항: 세부 정보를 표시하여 되돌릴 트랜잭션인지 확인합니다.

    # dnf history info <transaction_id>
  3. 트랜잭션을 되돌립니다.

    # dnf history undo <transaction_id>

    예를 들어 이전에 설치한 unzip 패키지를 제거하려면 다음을 입력합니다.

    # dnf history undo 12

9.2.2. 여러 DNF 트랜잭션 되돌리기

dnf history rollback 명령을 사용하여 지정된 트랜잭션과 마지막 트랜잭션 간에 수행되는 DNF 트랜잭션을 모두 되돌릴 수 있습니다. 트랜잭션 ID로 지정된 트랜잭션은 변경되지 않은 상태로 유지됩니다.

절차

  1. 되돌리려는 상태의 트랜잭션 ID를 확인합니다.

    # dnf history
    ID | Command line     | Date and time     | Action(s)   | Altered
    ------------------------------------------------------------------
    14 | install wget     | 2022-11-03 10:49  | Install     |    1
    13 | install unzip    | 2022-11-03 10:49  | Install     |    1
    12 | install vim-X11  | 2022-11-03 10:20  | Install     |  171 EE
  2. 지정된 트랜잭션을 되돌립니다.

    # dnf history rollback <transaction_id>

    예를 들어 wgetunzip 패키지가 설치되기 전에 상태로 되돌리려면 다음을 입력합니다.

    # dnf history rollback 12

    또는 트랜잭션 기록의 모든 트랜잭션을 되돌리려면 트랜잭션 ID 1 을 사용합니다.

    # dnf history rollback 1

10장. 사용자 정의 소프트웨어 리포지토리 관리

/etc/dnf/dnf.conf 파일에서 또는 /etc/ yum .repo s.d/ 디렉터리의 .repo 파일에서 리포지토리를 구성할 수 있습니다.

중요

/etc/dnf/dnf.conf 대신 .repo 파일에 리포지토리를 정의합니다.

/etc/dnf/dnf.conf 파일에는 [main] 섹션이 포함되어 있으며 리포지토리별 옵션을 설정하는 데 사용할 수 있는 하나 이상의 리포지토리 섹션([ <repository-ID> ])을 포함할 수 있습니다. /etc/dnf/dnf.conf 파일의 개별 리포지토리 섹션에 정의된 값은 [main] 섹션에 설정된 값을 재정의합니다.

10.1. DNF 리포지터리 옵션

/etc/dnf/dnf.conf 구성 파일에는 대괄호([])에 고유한 리포지토리 ID가 있는 리포지토리 섹션이 포함되어 있습니다. 이러한 섹션을 사용하여 개별 DNF 리포지토리를 정의할 수 있습니다.

중요

[] 의 리포지토리 ID는 고유해야 합니다.

사용 가능한 리포지토리 ID 옵션의 전체 목록은 dnf.conf(5) 도움말 페이지의 [ <repository-ID> ] OPTIONS 섹션을 참조하십시오.

10.2. DNF 리포지토리 추가

dnf config-manager --add-repo 명령을 사용하여 DNF 리포지토리를 시스템에 추가할 수 있습니다.

절차

  1. 시스템에 리포지토리를 추가합니다.

    # dnf config-manager --add-repo <repository_URL>

    이 명령으로 추가된 리포지토리는 기본적으로 활성화되어 있습니다.

  2. 선택적으로 /etc/yum.repos.d/<repository_URL>.repo 파일에서 이전 명령이 생성한 리포지토리 설정을 검토하고 업데이트합니다.

    # cat /etc/yum.repos.d/<repository_URL>.repo
주의

Red Hat 인증서 기반CDN( Content Delivery Network ) 이외의 검증되지 않았거나 신뢰할 수 없는 소스에서 소프트웨어 패키지를 확보하고 설치하는 것은 잠재적인 보안 위험이며 보안, 안정성, 호환성 및 유지 관리 문제로 이어질 수 있습니다.

10.3. DNF 리포지토리 활성화

dnf config-manager 명령을 사용하여 시스템에 추가된 DNF 리포지토리를 활성화할 수 있습니다.

절차

  • 리포지토리를 활성화합니다.

    # dnf config-manager --enable <repository_id>

10.4. DNF 리포지토리 비활성화

dnf config-manager 명령을 사용하여 시스템에 추가된 DNF 리포지토리를 비활성화할 수 있습니다.

절차

  • 리포지토리를 비활성화합니다.

    # dnf config-manager --disable <repository_id>

11장. 애플리케이션 스트림 콘텐츠 버전 관리

AppStream 리포지토리의 콘텐츠는 모듈 스트림에 해당하는 여러 버전에서 사용할 수 있습니다.

11.1. 모듈식 종속 항목 및 스트림 변경

일반적으로 콘텐츠를 제공하는 패키지는 추가 패키지에 따라 달라지며 일반적으로 원하는 종속성 버전을 지정합니다. 모듈에 포함된 패키지의 경우 이 메커니즘도 적용되지만 패키지와 특정 버전을 모듈 및 스트림으로 그룹화하면 추가 제약 조건이 발생합니다. 또한 모듈 스트림은 포함된 패키지와 관계없이 다른 모듈의 스트림에 대한 종속성을 선언할 수 있습니다.

패키지 또는 모듈이 있는 작업이 끝나면 설치된 모든 패키지의 전체 종속성 트리가 패키지가 선언하는 모든 조건을 충족해야 합니다. 또한 모든 모듈 스트림 종속성을 충족해야 합니다. 예를 들어 모듈 스트림을 비활성화하려면 다른 모듈 스트림을 비활성화해야 할 수 있습니다. 패키지가 자동으로 제거되지 않습니다.

다음 작업으로 인해 후속 자동 작업이 발생할 수 있습니다.

  • 모듈 스트림을 활성화하면 추가 모듈 스트림을 활성화할 수 있습니다.
  • 모듈 스트림 프로필을 설치하거나 스트림에서 패키지를 설치하면 추가 모듈 스트림을 활성화하고 추가 패키지를 설치할 수 있습니다.
  • 패키지를 제거하면 추가 패키지가 제거될 수 있습니다. 이러한 패키지가 모듈에서 제공되면 이러한 스트림의 패키지가 더 이상 설치되지 않은 경우에도 추가 설치를 위해 모듈 스트림은 활성화됩니다. 이는 사용되지 않은 DNF 저장소의 동작을 미러링합니다.

11.2. 모듈식 종속성 상호 작용

모듈식 종속성 은 일반 RPM 종속 항목 위에 있는 추가 계층입니다. 모듈식 종속성은 리포지토리 간 가상 종속 항목과 유사하게 작동합니다. 즉, RPM 종속 항목과 모듈식 종속 항목을 모두 확인해야 합니다.

변경하도록 명시적으로 지시하지 않는 한 시스템은 항상 모듈과 스트림 선택을 유지합니다. 모듈식 패키지는 이 패키지를 제공하는 모듈의 현재 활성화된 스트림에 포함된 업데이트를 수신하지만 다른 스트림에 포함된 버전으로 업그레이드하지는 않습니다.

11.3. 모듈 스트림 재설정

모듈을 재설정하는 것은 이 모듈을 초기 상태로 반환하는 작업입니다(활성화되거나 비활성화되지 않음). 모듈에 기본 스트림이 구성된 경우 이 스트림은 모듈을 재설정하여 활성화됩니다.

모듈을 재설정하는 것은 예를 들어 모듈을 활성화하지 않고 모듈에서 RPM 콘텐츠만 추출하려는 경우 유용합니다. 모듈을 활성화하고 내용을 추출하여 이 모듈을 초기 상태로 재설정한 후 dnf 모듈 reset 명령을 사용할 수 있습니다.

절차

  • 모듈 상태를 재설정합니다.

    # dnf module reset <module-name>

    모듈이 초기 상태로 반환됩니다. 활성화된 스트림 및 설치된 프로필에 대한 정보는 삭제되지만 설치된 콘텐츠는 제거되지 않습니다.

11.4. 모듈의 모든 스트림 비활성화

기본 스트림이 있는 모듈에는 항상 하나의 스트림이 활성화됩니다. 모듈의 모든 모듈 스트림에서 액세스할 수 없도록 하려면 전체 모듈을 비활성화할 수 있습니다.

사전 요구 사항

절차

  • 모듈을 비활성화합니다.

    # dnf module disable <module-name>

    dnf 명령은 확인을 요청한 다음 모든 스트림으로 모듈을 비활성화합니다. 모든 모듈 스트림은 비활성 상태가 됩니다. 설치된 콘텐츠가 제거되지 않습니다.

11.5. 이후 스트림으로 전환

이후 모듈 스트림으로 전환하면 해당 패키지가 모두 이후 버전으로 교체됩니다.

중요

데이터를 백업하고 구성 요소와 관련된 마이그레이션 지침을 따릅니다.

사전 요구 사항

  • 시스템이 완전히 업데이트되었습니다.

절차

  1. 설치된 구성 요소를 새 버전으로 전환하고 모듈(component) 및 스트림(버전)을 선택합니다.

    # dnf module switch-to <module:stream>

    예를 들어 nodejs:18 모듈 스트림에서 nodejs:20 스트림으로 전환하려면 다음을 입력합니다.

    # dnf module switch-to nodejs:20
    ...
    Dependencies resolved.
    ========================================================================================
     Package          Arch   Version                                   Repository      Size
    ========================================================================================
    Upgrading:
     nodejs           x86_64 1:20.5.1-1.module+el9.3.0+19646+9a702805  rhel-AppStream  14 M
     nodejs-docs      noarch 1:20.5.1-1.module+el9.3.0+19646+9a702805  rhel-AppStream 8.0 M
     nodejs-full-i18n x86_64 1:20.5.1-1.module+el9.3.0+19646+9a702805  rhel-AppStream 8.5 M
     npm              x86_64 1:9.8.0-1.20.5.1.1.module+el9.3.0+19646+9a702805
                                                                       rhel-AppStream 2.6 M
    Switching module streams:
     nodejs                  18 -> 20

    모듈 스트림이 아닌 콘텐츠에서 모듈 스트림으로 전환할 수도 있습니다. 예를 들어, 비modular PHP 8.0 에서 모듈식 PHP 8.1 로 전환하려면 다음을 입력합니다.

    # dnf module switch-to php:8.1
    ...
    Dependencies resolved.
    ========================================================================================
     Package      Arch     Version                                   Repository        Size
    ========================================================================================
    Upgrading:
     php-common   x86_64   8.1.14-1.module+el9.2.0+17911+b059dfc2    rhel-AppStream   687 k
    Enabling module streams:
     php                   8.1
  2. 선택 사항: 설치된 구성 요소를 새 버전으로 전환하고 설치 또는 업데이트할 프로필도 선택합니다.

    # dnf module switch-to <module:stream/profile>

검증

  • 설치된 구성 요소가 새 버전([e])으로 전환되었는지 확인합니다.

    $ dnf module list nodejs
    ...
    rhel-AppStream
    Name       Stream     Profiles                                     Summary
    nodejs     18         common [d], development, minimal, s2i        Javascript runtime
    nodejs     20 [e]     common [d] [i], development, minimal, s2i    Javascript runtime
    
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

부록 A. dnf 명령 목록

다음 섹션에서는 Red Hat Enterprise Linux 9의 콘텐츠를 나열, 설치 및 제거하는 DNF 명령을 검토하십시오.

A.1. RHEL 9의 콘텐츠를 나열하는 명령

다음은 Red Hat Enterprise Linux 9에서 컨텐츠 및 세부 정보를 찾는 데 일반적으로 사용되는 DNF 명령입니다.

명령설명

DNF 검색어

패키지와 관련된 용어를 사용하여 패키지를 검색합니다.

DNF repoquery 패키지

활성화된 DNF 리포지토리에서 선택한 패키지 및 해당 버전을 검색합니다.

dnF 목록

설치되어 사용 가능한 모든 패키지에 대한 정보를 나열합니다.

DNF 목록 -- installed

DNF repoquery -- installed

시스템에 설치된 모든 패키지를 나열합니다.

dnf list --available

DNF repoquery

활성화된 모든 리포지토리에서 설치할 수 있는 모든 패키지를 나열합니다.

DNF 리포지터리

시스템에 활성화된 모든 리포지토리를 나열합니다.

DNF repolist --disabled

시스템에서 비활성화된 모든 리포지토리를 나열합니다.

DNF repolist --all

활성화 및 비활성화된 리포지토리를 모두 나열합니다.

DNF repoinfo

리포지토리에 대한 추가 정보를 나열합니다.

dnf info package_name

dnf repoquery --info package_name

사용 가능한 패키지에 대한 세부 정보를 표시합니다.

dnf repoquery --info --installed package_name

시스템에 설치된 패키지의 세부 정보를 표시합니다.

DNF 모듈 목록

모듈과 현재 상태를 나열합니다.

dnf module info module_name

모듈에 대한 세부 정보를 표시합니다.

dnf module list module_name

모듈의 현재 상태를 표시합니다.

dnf 모듈 정보 --profile module_name

선택한 모듈의 사용 가능한 프로필과 관련된 패키지를 표시합니다.

dnf 모듈 info --profile module_name:stream

지정된 스트림을 사용하여 모듈 사용 가능한 프로필과 관련된 패키지를 표시합니다.

DNF 모듈 제공

패키지를 제공하는 모듈, 스트림 및 프로필을 결정합니다.

모듈 외부에서 패키지를 사용할 수 있는 경우 이 명령의 출력이 비어 있습니다.

DNF 그룹 요약

설치 및 사용 가능한 그룹 수를 확인합니다.

DNF 그룹 목록

설치되어 사용 가능한 모든 그룹을 나열합니다.

dnf group info group_name

특정 그룹에 포함된 필수 및 선택적 패키지를 나열합니다.

A.2. RHEL 9에서 콘텐츠를 설치하기 위한 명령

다음은 Red Hat Enterprise Linux 9에 컨텐츠를 설치하는 데 일반적으로 사용되는 DNF 명령입니다.

명령설명

dnf install package_name

패키지를 설치합니다.

패키지가 모듈 스트림에서 제공하는 경우 dnf 는 필수 모듈 스트림을 확인하고 이 패키지를 설치하는 동안 자동으로 활성화합니다. 이는 모든 패키지 종속 항목에 대해 재귀적으로 발생합니다. 더 많은 모듈 스트림이 요구 사항을 충족하는 경우 기본 모듈이 사용됩니다.

dnf install package_name_1 package_name_2

여러 패키지 및 종속 항목을 동시에 설치합니다.

dnf install package_name.arch

multilib 시스템(AMD64, Intel 64 시스템)에 패키지를 설치할 때 패키지 이름에 패키지를 추가하여 패키지 아키텍처를 지정합니다.

dnf install /usr/sbin/binary_file

바이너리의 경로를 인수로 사용하여 바이너리를 설치합니다.

DNF 설치 /path/

로컬 디렉터리에서 이전에 다운로드한 패키지를 설치합니다.

dnf install package_url

패키지 URL을 사용하여 원격 패키지를 설치합니다.

dnf 모듈 enable module_name:stream

특정 스트림을 사용하여 모듈을 활성화합니다.

이 명령을 실행하면 RPM 패키지가 설치되지 않습니다.

dnf module install module_name:stream

dnf install @module_name:stream

특정 모듈 스트림에서 기본 프로필을 설치합니다.

이 명령을 실행하면 지정된 스트림도 활성화됩니다.

dnf module install module_name:stream/profile

dnf install @module_name:stream/profile

특정 스트림을 사용하여 선택한 프로필을 설치합니다.

dnf group install group_name

그룹 이름으로 패키지 그룹을 설치합니다.

dnf group install group_ID

groupID로 패키지 그룹을 설치합니다.

A.3. RHEL 9에서 콘텐츠를 제거하는 명령

다음은 Red Hat Enterprise Linux 9에서 콘텐츠를 제거하는 데 일반적으로 사용되는 DNF 명령입니다.

명령설명

dnf remove package_name

특정 패키지와 모든 종속 패키지를 제거합니다.

dnf remove package_name_1 package_name_2

여러 패키지와 사용되지 않는 종속 항목을 동시에 제거합니다.

dnf group remove group_name

그룹 이름으로 패키지 그룹을 제거합니다.

dnf group remove group_ID

groupID에 의해 패키지 그룹을 제거합니다.

dnf 모듈 remove --all module_name:stream

지정된 스트림에서 모든 패키지를 제거합니다.

이 명령을 실행하면 시스템에서 중요한 패키지를 제거할 수 있습니다.

dnf 모듈 제거 module_name:stream/profile

설치된 프로필에서 패키지를 제거합니다.

dnf 모듈 remove module_name:stream

지정된 스트림 내에 설치된 모든 프로필에서 패키지를 제거합니다.

dnf 모듈 재설정 module_name

모듈을 초기 상태로 재설정합니다.

이 명령을 실행하면 지정된 모듈에서 패키지를 제거하지 않습니다.

dnf module disable module_name

모듈 및 모든 스트림을 비활성화합니다.

이 명령을 실행하면 지정된 모듈에서 패키지를 제거하지 않습니다.

법적 공지

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.