주:

Oracle Linux에서 DNF 사용

소개

Oracle Linux는 DNF(Dandified Yum)를 기반으로 시스템 패키지 설치 및 관리를 위한 클라이언트 소프트웨어로 dnf 유틸리티를 제공합니다. 이러한 패키지는 ULN(Unbreakable Linux Network) 또는 Oracle Linux yum 서버에서 가져올 수 있습니다. 소프트웨어 패키지는 표준 dnf 명령을 사용하여 시스템에 설치되며 적절한 ULN 채널 가입 또는 yum 저장소를 사용으로 설정한 시스템에 따라 달라집니다. 패키지를 설치하거나 업그레이드하는 동안 dnf는 자동으로 패키지 종속성 및 요구 사항을 처리합니다.

DNF는 기존의 yum' 명령에 비해 기능 및 성능을 크게 향상시키고 모듈식 컨텐츠와 보다 안정적이고 문서화된 API를 포함한 많은 새로운 기능을 제공합니다.

목표

이 자습서에서는 다음을 수행하는 방법에 대해 알아봅니다.

필요 조건

Oracle Linux 배치

주: 고유 테넌시에서 실행 중인 경우 linux-virt-labs GitHub 프로젝트 README.md를 읽고 실습 환경을 배치하기 전에 필요 조건을 완료하십시오.

  1. Luna Desktop에서 터미널을 엽니다.

  2. linux-virt-labs GitHub 프로젝트를 복제합니다.

    git clone https://github.com/oracle-devrel/linux-virt-labs.git
  3. 작업 디렉토리로 변경합니다.

    cd linux-virt-labs/ol
  4. 필요한 모음을 설치합니다.

    ansible-galaxy collection install -r requirements.yml
  5. lab 환경을 배치합니다.

    ansible-playbook create_instance.yml -e localhost_python_interpreter="/usr/bin/python3.6"

    무료 실습 환경에는 localhost에서 실행되는 재생에 대해 ansible_python_interpreter를 설정하는 추가 변수 local_python_interpreter이 필요합니다. 이 변수는 환경이 python3.6 모듈 아래에 있는 Oracle Cloud Infrastructure SDK for Python용 RPM 패키지를 설치하기 때문에 필요합니다.

    기본 배치 구성은 AMD CPU 및 Oracle Linux 8을 사용합니다. Intel CPU 또는 Oracle Linux 9 또는 10을 사용하려면 배치 명령에 -e instance_shape="VM.Standard3.Flex"를 추가하거나 -e os_version="10", -e os_version="9" 또는 -e os_version="8"를 설정합니다.

    중요: 플레이북이 성공적으로 실행될 때까지 기다렸다가 일시 중지 작업에 도달합니다. 플레이북의 이 단계에서 Oracle Linux 설치가 완료되고 인스턴스가 준비됩니다. 이전 플레이에서 배치하는 노드의 공용(public) 및 전용(private) IP 주소와 실습을 실행하는 동안 필요한 기타 배치 정보를 출력합니다.

DNF 저장소 작업

  1. 터미널을 열고 SSH를 통해 ol-node-01 인스턴스에 연결합니다.

    ssh oracle@<ip_address_of_instance>
  2. 사용으로 설정된 저장소 목록을 가져옵니다.

    dnf repolist

    DNF는 /etc/yum.repos.d 디렉토리에서 .repo로 끝나는 파일을 검색합니다. all 옵션을 전달하여 사용으로 설정된 저장소와 사용 안함으로 설정된 저장소의 목록을 모두 볼 수 있습니다. 저장소 파일은 하나 이상의 저장소를 정의할 수 있으며 enabled=1enabled=0의 경우 사용 안함으로 설정된 저장소를 고려할 수 있습니다.

  3. 저장소를 사용으로 설정합니다.

    Oracle Linux 10:

    sudo dnf config-manager --enable ol10_codeready_builder

    Oracle Linux 9:

    sudo dnf config-manager --enable ol9_codeready_builder

    Oracle Linux 8:

    sudo dnf config-manager --enable ol8_codeready_builder
  4. Repository를 비활성화합니다.

    Oracle Linux 10:

    sudo dnf config-manager --disable ol10_codeready_builder

    Oracle Linux 9:

    sudo dnf config-manager --disable ol9_codeready_builder

    Oracle Linux 8:

    sudo dnf config-manager --disable ol8_codeready_builder
  5. 저장소를 설치합니다.

    Oracle Linux는 다양한 제품에 대한 사전 구축된 저장소를 패키지 형식으로 제공합니다. 이러한 항목을 검색한 다음 설치하고 사용으로 설정할 수 있습니다.

    dnf search oracle*release*

    Oracle Linux 10:

    sudo dnf install -y oracle-instantclient-release-el10

    Oracle Linux 9:

    sudo dnf install -y oracle-instantclient-release-el9

    Oracle Linux 8:

    sudo dnf install -y oracle-instantclient-release-el8

    선호하지는 않지만 다음을 수행하여 저장소를 설치할 수도 있습니다.

    1. /etc/yum.repos.d에서 새 .repo 파일을 직접 생성
    2. 로컬 또는 URL에서 저장된 저장소 파일을 설치할 수 있는 dnf config-manager --add-repo <repo_file> 사용
  6. DNF 캐시를 제거합니다.

    성능을 지원하기 위해 DNF는 /var/cache/dnf에 데이터를 캐시합니다. 이 캐시된 데이터가 오래되고 dnf 명령이 실패할 수 있는 경우가 있습니다. 이 문제를 해결하기 위해 캐시된 항목을 모두 제거할 수 있습니다.

    dnf clean all

    DNF는 다양한 명령을 실행할 때 시간이 지남에 따라 이 캐시를 자동으로 재구축합니다. 명령 실패 문제를 해결하려면 캐시를 지운 다음 실패한 명령을 재시도하십시오.

패키지 및 모듈 관리

Oracle Linux 10 참고 사항: DNF 모듈성(모듈 및 스트림)은 Oracle Linux 10에서 사용할 수 없습니다. AppStream 저장소에서 표준 패키지를 설치할 수 있지만 이전 릴리스에서와 같이 모듈 또는 스트림을 사용으로 설정하거나 설치할 수 없습니다.

제공된 단계에서 DNF 모듈성이 사용되는 경우 지침은 Oracle Linux 8 및 Oracle Linux 9에만 적용됩니다.

  1. 사용으로 설정된 저장소에서 사용 가능한 패키지 목록을 가져옵니다.

    dnf list

    installed 또는 available 옵션을 사용하여 반환된 출력의 범위를 좁히고 dnf list available git와 같은 특정 패키지 이름을 요청할 수도 있습니다.

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

    dnf module list

    출력에는 시스템에서 사용할 수 있는 모듈, 연관된 스트림 및 프로파일이 표시됩니다.

    • Name: 모듈 이름
    • Stream: 스트림 버전
    • Profiles: 사용 가능한 프로파일 및 해당 상태
      • common: 프로덕션 준비 배포가 강화되었으며 기본 프로파일입니다.
      • development: 모듈을 수정하는 데 필요한 패키지를 설치합니다.
      • minimal: 작업 중인 응용 프로그램을 제공하는 가장 작은 패키지 집합을 설치합니다.

    출력 끝에 있는 힌트를 사용하여 enabled, disabled, installed 또는 default 스트림과 프로파일을 확인합니다.

    패키지와 마찬가지로 모듈 이름을 list 옵션에 전달하여 해당 모듈의 상태만 확인할 수 있습니다.

  3. 패키지 또는 모듈에 대한 정보를 가져옵니다.

    dnf info zsh

    이 경우 zsh는 패키지 이름입니다. 모듈에 대해서도 동일하게 수행하지만 module 명령을 추가하고 dnf module info php와 같은 특정 모듈을 추가합니다. 특정 모듈 스트림에 대한 정보가 필요한 경우 모듈 이름이 아닌 module:stream과 함께 --profile을 전달합니다.

    dnf module info --profile php:8.2
  4. 사용 가능하거나 설치된 패키지를 검색합니다.

    dnf search php
  5. 특정 파일 이름 또는 명령을 제공하는 패키지를 검색합니다.

    별칭이 whatprovidesprovides 명령은 파일 이름과 일치하는 패키지를 찾습니다. 전체 경로를 제공하지 않을 경우 DNF는 파일 이름에 /usr/sbin/usr/bin를 추가합니다. 레거시 용도로 /sbin/bin도 추가됩니다.

    dnf provides sudo
  6. 패키지를 설치합니다.

    sudo dnf install tmux

    y에 응답하여 패키지 설치를 확인합니다. 나중에 -y 옵션을 전달하여 이 추가 단계를 피하십시오. 기본적으로 DNF는 사용으로 설정된 저장소의 패키지만 설치합니다. 그러나 --enablerepo=<repo name> 옵션을 전달하여 해당 기본 동작을 무시할 수 있습니다.

  7. 패키지를 다시 설치합니다.

    sudo dnf reinstall -y tmux

    이 명령은 기본적으로 dnf remove, dnf install 순으로 수행합니다. 중요한 차이점은 재설치를 사용하면 패키지와 연관된 파일의 사용자 정의 구성이 유지된다는 것입니다.

  8. 모듈을 사용으로 설정합니다.

    모듈에서 패키지를 설치하기 전에 사용으로 설정해야 합니다.

    Oracle Linux 9:

    sudo dnf module -y enable nginx:1.22

    Oracle Linux 8:

    sudo dnf module -y enable nginx
  9. 모듈을 설치합니다.

    Oracle Linux 9:

    sudo dnf module install -y nginx:1.22

    Oracle Linux 8:

    sudo dnf module install -y nginx:1.14

    패키지를 설치한 후 sudo dnf module list nginx를 실행하면 1.22 스트림의 common [d] 프로파일 옆에 [i]가 표시됩니다.

  10. 패키지 또는 모듈을 제거합니다.

    sudo dnf remove -y tmux

    마찬가지로 패키지 이름을 module:stream/profile로 바꾸어 동일한 구문을 사용하는 모듈을 제거할 수 있습니다.

  11. 모듈을 전환합니다.

    모듈 스트림을 전환하면 컨텐츠가 시스템의 현재 버전과 다른 버전으로 업그레이드되거나 다운그레이드됩니다. 또한 추가 종속성 설치 또는 더 이상 필요하지 않은 패키지 제거를 처리합니다.

    sudo dnf module -y switch-to nginx:1.24/common
  12. 모듈을 사용 안함으로 설정합니다.

    sudo dnf module -y disable nginx

    모듈을 사용 안함으로 설정하면 설치된 프로파일이 제거되고, 모든 관련 모듈 스트림을 사용할 수 없으며, 모듈식 RPMS가 패키지 세트의 일부가 아닌지 확인할 수 있습니다. DNF가 충돌을 감지하면 작업이 거부됩니다. 모듈을 사용 안함으로 설정하는 한 가지 이유는 기본 저장소 및 appstream에 최신 패키지가 존재하기 때문입니다.

  13. 모듈을 재설정합니다.

    이 작업은 더 이상 사용 또는 사용 안함으로 설정되지 않도록 모듈 상태를 설정합니다. DNF는 모든 프로파일을 제거하고 기본 프로파일의 패키지만 사용할 수 있습니다.

    sudo dnf module -y reset nginx

보안 업데이트 설치

  1. 사용 가능한 모든 errata를 나열합니다.

    dnf updateinfo list

    출력에는 사용으로 설정된 저장소와 각 업데이트가 표시됩니다. DNF는 사용 가능한 정오표를 ID 순서대로 정렬하고 해당 유형별로 추가로 식별합니다.

    • Severity/Sec : 우선 순위/보안 패치
    • bugfix : 버그 수정
    • enhancement : 기능 향상

    cves, bugfix 또는 security를 명령에 추가하여 출력을 특정 오류 유형으로만 제한할 수 있습니다. --installed를 전달하여 호스트에 설치된 보안 수정 사항 목록을 가져올 수도 있습니다.

  2. 사용 가능한 정오표의 요약을 표시합니다.

    dnf updateinfo summary
  3. 심각도를 기준으로 보안 업그레이드 목록을 가져옵니다.

    중요, 중요, 중요 또는 낮음--sec-severity 옵션에 전달할 수 있습니다.

    dnf updateinfo list --sec-severity=Important

    DNF를 사용하면 list 명령에 다른 옵션을 전달할 수 있습니다. --advisory <Advisory ID>를 사용하여 특정 권고 사항을 가져오거나 --cve <CVD ID를 사용하여 특정 CVE를 가져올 수 있습니다. list 대신 info 명령을 사용하면 정확한 옵션이 특정 권고 또는 CVE에 대한 자세한 정보를 제공합니다.

  4. 각 패키지를 최신 버전으로 업데이트합니다.

    sudo dnf upgrade -y

    선택적으로 -x 옵션 다음에 패키지 이름을 사용하여 업그레이드에서 특정 패키지를 제외할 수 있습니다. Oracle Linux는 모든 정오표를 적용할 것을 권장하지만, upgrade 명령은 다음 옵션을 사용합니다.

    • --cve: 단일 CVE ID를 업데이트합니다.
    • --advisory: 단일 권고 ID 업데이트
    • --security: 모든 보안 관련 정오표 업데이트

    또는 사용자가 sudo dnf upgrade-minimal를 실행하여 버그 수정, 향상된 기능 또는 보안 문제에 대한 수정을 제공하는 패키지에 업데이트만 적용할 수 있습니다.

    중요: 커널 업데이트 후 시스템을 재부트해야 합니다. 재부트할 수 없는 시스템을 실행하는 경우 Oracle Ksplice를 사용하여 커널 패치를 적용하는 것이 좋습니다.

패키지 그룹 관리

DNF는 패키지 그룹의 설치, 업데이트 또는 제거를 허용합니다. 이러한 그룹은 일반적인 용도를 제공하는 종속 패키지의 모음입니다.

  1. 사용 가능한 그룹을 나열합니다.

    dnf group list
  2. 그룹에 포함된 그룹 목록을 가져옵니다.

    dnf group info "Server with GUI"

    Server with GUI는 GNOME 그래픽 데스크탑을 설치합니다.

  3. 그룹에 포함된 개별 패키지를 표시합니다.

    dnf group info Core
  4. 그룹을 설치합니다.

    sudo dnf group install "Server with GUI" --assumeno

    --assumeno 옵션은 자동으로 no로 응답하고 이 자습서의 시간을 절약하기 위해 설치를 건너뜁니다. 이 옵션은 명령에서 제외된 상태로 두고 -y 옵션으로 바꾸어 자동으로 설치합니다. DNF는 그룹을 업데이트 및 제거할 수 있는 dnf group updatednf group remove 명령을 제공합니다.

DNF 내역 기능 사용

DNF 내역 기능은 dnf 명령으로 수행되는 모든 작업을 보여줍니다. 내역 기능을 사용하면 특정 DNF 트랜잭션의 실행 취소, 리두 및 롤백이 가능합니다. DNF 내역 외에도 패키지 설치, 업데이트 및 제거는 /var/log/dnf.log 파일에 기록됩니다.

  1. 모든 DNF 트랜잭션을 나열합니다.

    dnf history

    dnf history info <transaction ID>를 실행하여 트랜잭션 중 하나와 관련된 정보를 얻을 수 있습니다.

  2. 특정 트랜잭션을 롤백합니다.

    rollback 옵션은 지정된 <transaction ID> 이후의 모든 트랜잭션을 실행 취소합니다. 단일 트랜잭션만 취소하려면 대신 undo를 사용하십시오.

    sudo dnf history rollback <transaction ID>

    DNF history rollback 명령은 트랜잭션 ID를 증분하고 롤백을 고유 트랜잭션으로 기록합니다.

  3. 특정 트랜잭션을 반복합니다.

    특정 트랜잭션을 redo하고 각 단계를 반복할 수 있습니다.

    sudo dnf history redo <transaction ID>

패치 적용 자동화

dnf upgrade를 수동으로 실행하는 대신 DNF 자동 도구를 사용할 수 있습니다. 이 도구는 systemd 타이머를 사용하여 업그레이드, 다운로드 및 패키지 설치에 대한 자동 알림을 제공합니다.

  1. 필요한 패키지를 설치하고 타이머를 활성화합니다.

    sudo dnf install dnf-automatic -y
    sudo systemctl enable --now dnf-automatic.timer
  2. 기본 upgrade_type 구성을 확인합니다.

    DNF 자동 도구에 대한 구성 파일은 /etc/dnf/automatic.conf입니다. 기본적으로 자동 업그레이드는 사용 가능한 모든 업그레이드에 적용됩니다. 보안 업그레이드만 사용하도록 upgrade_type 매개변수를 security로 변경할 수 있습니다.

    grep upgrade_type /etc/dnf/automatic.conf

다음 단계

이 사용지침서에서는 Oracle Linux 시스템에서 소프트웨어 패키지를 관리하고 최신 보안 픽스로 최신 상태를 유지하는 방법을 배웠습니다. 따라서 시스템을 업데이트한 다음 관련 링크 섹션에서 Oracle Linux에 대한 자세한 내용과 교육을 확인하십시오.

추가 학습 자원

docs.oracle.com/learn에서 다른 랩을 탐색하거나 Oracle Learning YouTube 채널에서 더 많은 무료 학습 콘텐츠에 액세스하세요. 또한 education.oracle.com/learning-explorer를 방문하여 Oracle Learning Explorer가 되십시오.

제품 설명서는 Oracle Help Center를 참조하십시오.