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
)로 전환되었습니다. 결과적으로 패키지가 더 빠르게 설치되므로 대규모 트랜잭션 중에 특히 눈에 띄게됩니다.