7장. 소프트웨어 관리

다음 장에서는 RHEL 8과 RHEL 9 간의 소프트웨어 관리에 대한 주요 변경 사항을 설명합니다.

7.1. 소프트웨어 관리의 주요 변경 사항

DNF/YUM을 사용한 패키지 관리

Red Hat Enterprise Linux 9에서는 DNF에서 소프트웨어 설치를 보장합니다. Red Hat은 이전 주요 RHEL 버전과의 일관성을 위해 yum 용어를 계속 지원합니다. yum 대신 dnf 를 입력하는 경우 둘 다 호환성을 위한 별칭이므로 명령이 예상대로 작동합니다.

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

자세한 내용은 DNF 툴을 사용하여 소프트웨어 관리를 참조하십시오.

주요 RPM 기능 및 변경 사항

Red Hat Enterprise Linux 9는 RPM 버전 4.16과 함께 배포됩니다. 이 버전에서는 이전 버전에 비해 많은 개선 사항이 도입되었습니다.

주요 기능은 다음과 같습니다.

  • 특히 새로운 SPEC 기능:

    • 빠른 매크로 기반 종속성 생성기

      이제 종속성 생성기를 일반 RPM 매크로로 정의할 수 있습니다. 이는 임베디드 Lua 인터프리터와 함께 특히 유용합니다 (%{lua:…​}) 정교하면서도 빠른 생성기를 작성하고 쉘 스크립트 중복을 방지하고 쉘 스크립트를 실행할 수 있기 때문입니다.

      예제:

      %__foo_provides()    %{basename:%{1}}
    • 동적 빌드 종속성 생성을 활성화하는 %generate_buildrequires 섹션

      이제 새로 사용 가능한 %generate_buildrequires 섹션을 사용하여 RPM 빌드 시 추가 빌드 종속성을 프로그래밍 방식으로 생성할 수 있습니다. 이 기능은 전문 유틸리티가 MOM, Golang, Node.js, Ruby, Python 또는 Haskell과 같은 런타임 또는 빌드 시간 종속성을 결정하는 데 일반적으로 사용되는 언어로 작성된 소프트웨어를 패키징할 때 유용합니다.

    • 메타(주문되지 않음) 종속성

      meta 라는 새로운 종속성 한정자를 사용하면 특히 설치 시간 또는 런타임 종속성이 아닌 종속성을 표시할 수 있습니다. 이는 메타 패키지의 종속성을 지정할 때와 같이 일반적인 종속성 순서에서 발생할 수 있는 불필요한 종속성 루프를 방지하는 데 유용합니다.

      예제:

      Requires(meta): <pkgname>
    • 표현식의 기본 버전 비교

      이제 새로 지원되는 v"…​를 사용하여 표현식에서 임의의 버전 문자열을 비교할 수 있습니다." 형식.

      예제:

      %if v"%{python_version}" < v"3.9"
    • caret 버전 연산자, 틸드와 반대

      새 캐럿(^) 연산자를 사용하여 기본 버전보다 높은 버전을 표시할 수 있습니다. 이 연산자는 반대의 의미가 있는 기존 틸(~) 연산자를 보완합니다.

    • %elif,%elifos%elifarch
    • 선택 사항인 자동 패치 및 소스 번호 지정

      patch:Source: 번호가 없는 태그는 나열된 순서에 따라 자동으로 번호가 지정됩니다.

    • %autopatch 에서 패치 범위를 허용

      %autopatch 매크로는 적용할 최소 및 최대 패치 번호를 제한하기 위해 -m 및 -M 매개 변수를 각각 허용합니다.

    • %patchlist%sourcelist 섹션

      이제 새로 추가된 %patchlist 및 %sourcelist 섹션을 사용하여 각 항목 앞에 해당 패치: 및 소스: 태그를 사용하지 않고 패치 및 소스 파일을 나열할 수 있습니다.

    • 빌드 조건을 선언할 수 있는 보다 직관적인 방법

      RHEL 9.2부터 새로운 %bcond 매크로를 사용하여 조건을 빌드할 수 있습니다. %bcond 매크로는 빌드 조건 이름과 기본값을 인수로 사용합니다. 매크로 없이 이전 %bcond_with 및 %bcond_ 에 비해 %bcond 는 이해하기 쉽고 빌드 시 기본값을 계산할 수 있습니다. 기본값은 모든 숫자 식일 수 있습니다.

      예제:

      • gnutls 빌드 조건을 생성하려면 기본적으로 활성화됩니다.

        %bcond gnutls 1
      • 부트스트랩 빌드 조건을 생성하려면 기본적으로 비활성화되어 있습니다.

        %bcond bootstrap 0
      • gnutls 와 반대의 기본값인 openssl 빌드 조건을 생성하려면 다음을 수행합니다.

        %bcond openssl %{without gnutls}
  • RPM 데이터베이스는 이제 sqlite 라이브러리를 기반으로 합니다. BerkeleyDB 데이터베이스에 대한 읽기 전용 지원은 마이그레이션 및 쿼리 목적으로 유지됩니다.
  • 이전에 RPM 자체에 빌드된 트랜잭션에서 감사 로그 이벤트를 발행하기 위한 새로운 rpm-plugin-audit 플러그인
  • 패키지 빌드에서 병렬 처리 증가

    패키지 빌드 프로세스의 병렬화 방법은 여러 가지 개선되었습니다. 이러한 개선 사항에는 다양한 빌드 루트 정책 스크립트와 온전성 검사, 파일 분류 및 하위 패키지 생성 및 순서가 포함됩니다. 따라서 특히 대규모 패키지를 위해 멀티프로세서 시스템에서 패키지를 구축하는 것이 더 빠르고 효율적이어야 합니다.

  • 빌드 시 헤더 데이터의 UTF-8 검증
  • RPM에서 Zstandard (zstd) 압축 알고리즘을 지원

    RHEL 9에서는 기본 RPM 압축 알고리즘이 Zstandard(zstd)로 전환되었습니다. 결과적으로 패키지가 더 빠르게 설치되므로 대규모 트랜잭션 중에 특히 눈에 띄게됩니다.