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 시스템에서 수행된 경우에만 처리됩니다.