5.4. RPM 조건


RPM Conditionals는 사양 파일의 다양한 섹션을 조건부로 포함할 수 있습니다.

조건부 포함은 일반적으로 다음을 처리합니다.

  • 아키텍처별 섹션
  • 운영 체제별 섹션
  • 다양한 버전의 운영 체제 간 호환성 문제
  • 매크로의 존재 및 정의

5.4.1. RPM 조건 구문

RPM 조건에서는 다음 구문을 사용합니다.

expression 이 true이면 몇 가지 작업을 수행합니다.

%if expression
…​
%endif

expression 이 true이면 다른 작업을 수행하는 경우 다른 작업을 수행합니다.

%if expression
…​
%else
…​
%endif

5.4.2. %if 조건

다음 예제에서는 %if RPM 조건을 사용하는 방법을 보여줍니다.

예 5.3. %if 조건부를 사용하여 Red Hat Enterprise Linux 8과 기타 운영 체제 간의 호환성 처리

%if 0%{?rhel} == 8
sed -i '/AS_FUNCTION_DESCRIBE/ s/^/#/' configure.in
sed -i '/AS_FUNCTION_DESCRIBE/ s/^/#/' acinclude.m4
%endif

이 조건부는 AS_FUNCTION_DESCRIBE 매크로를 지원하는 측면에서 RHEL 8과 기타 운영 체제 간의 호환성을 처리합니다. RHEL용으로 패키지를 빌드하면 %rhel 매크로가 정의되고 RHEL 버전으로 확장됩니다. 해당 값이 8이므로 패키지가 RHEL 8에 대한 빌드인 경우 RHEL 8에서 지원하지 않는 AS_FUNCTION_DESCRIBE에 대한 참조가 autoconfig 스크립트에서 삭제됩니다.

예 5.4. %if 조건부를 사용하여 매크로 정의 처리

%define ruby_archive %{name}-%{ruby_version}
%if 0%{?milestone:1}%{?revision:1} != 0
%define ruby_archive %{ruby_archive}-%{?milestone}%{?!milestone:%{?revision:r%{revision}}}
%endif

이 조건부는 매크로의 정의를 처리합니다. %milestone 또는 %revision 매크로가 설정된 경우 업스트림 tarball의 이름을 정의하는 %ruby_archive 매크로가 다시 정의됩니다.

5.4.3. %if 조건의 특수 변형

%ifarch 조건, %ifnarch 조건, %ifnarch 조건부 및 %ifos 조건은 %if 조건의 특수 변형입니다. 이러한 변형은 일반적으로 사용되며, 따라서 자체 매크로가 있습니다.

%ifarch 조건

%ifarch 조건은 아키텍처별로 지정된 사양 파일의 블록을 시작하는 데 사용됩니다. 그런 다음 각각 쉼표 또는 공백으로 구분된 하나 이상의 아키텍처 분류자가 뒤에 옵니다.

예 5.5. %ifarch 조건을 사용하는 예

%ifarch i386 sparc
…​
%endif

%ifarch%endif 사이의 사양 파일의 모든 내용은 32비트 AMD 및 Intel 아키텍처 또는 Sun Cryostat 기반 시스템에서만 처리됩니다.

%ifnarch 조건

%ifnarch 조건부에는 %ifarch 조건보다 역방향 논리가 있습니다.

예 5.6. %ifnarch 조건을 사용하는 예

%ifnarch alpha
…​
%endif

%ifnarch%endif 사이의 사양 파일의 모든 내용은 Digital Alpha/AXP 기반 시스템에서 수행되지 않는 경우에만 처리됩니다.

%ifos 조건

%ifos 조건부는 빌드의 운영 체제에 따라 처리를 제어하는 데 사용됩니다. 한 개 이상의 운영 체제 이름을 뒤에 넣을 수 있습니다.

예 5.7. %ifos 조건 사용 예

%ifos linux
…​
%endif

%ifos%endif 사이의 사양 파일의 모든 내용은 빌드가 Linux 시스템에서 수행된 경우에만 처리됩니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

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

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.