4.2. SPEC 파일이란 무엇입니까?
SPEC 파일은 rpmbuild
유틸리티에서 RPM을 빌드하는 데 사용하는 레시피로 이해할 수 있습니다. SPEC 파일은 일련의 섹션에서 지침을 정의하여 빌드 시스템에 필요한 정보를 제공합니다. 섹션은 Preamble 및 body 부분에 정의되어 있습니다. Preamble 부분에는 body 부분에서 사용되는 일련의 메타데이터 항목이 포함되어 있습니다. body 부분은 지침의 주요 부분을 나타냅니다.
다음 섹션에서는 SPEC 파일의 각 섹션에 대해 설명합니다.
4.2.1. 사전 항목
아래 표는 RPM SPEC 파일의 Preamble 섹션에서 자주 사용되는 몇 가지 지시문을 제공합니다.
표 4.1. RPM SPEC 파일의 Preamble
섹션에 사용된 항목
SPEC 조건 | 정의 |
---|---|
| SPEC 파일 이름과 일치해야 하는 패키지의 기본 이름입니다. |
| 소프트웨어의 업스트림 버전 번호입니다. |
|
이 버전의 소프트웨어가 릴리스된 횟수입니다. 일반적으로 초기 값을 1%{?dist}로 설정하고 패키지의 새 릴리스마다 증가시킵니다. 새 |
| 패키지에 대한 간략한 요약입니다. |
| 패키지하는 소프트웨어의 라이센스입니다. |
| 프로그램에 대한 자세한 내용은 전체 URL입니다. 대부분의 경우 이것은 패키지하는 소프트웨어의 업스트림 프로젝트 웹 사이트입니다. |
| 업스트림 소스 코드의 압축 아카이브 경로 또는 URL(패치되지 않은 패치는 다른 위치에서 처리됩니다). 이는 아카이브의 액세스 가능하고 안정적인 스토리지(예: 패키지 관리자의 로컬 스토리지가 아닌 업스트림 페이지)를 가리켜야 합니다. 필요한 경우 더 많은 SourceX 지시문을 추가하여 매번 숫자를 늘릴 수 있습니다. 예를 들면 다음과 같습니다. Source1, Source2, Source3 등이 있습니다. |
| 필요한 경우 소스 코드에 적용할 첫 번째 패치의 이름입니다. 지시문은 두 가지 방법으로 적용할 수 있습니다. 패치 종료 시 또는 번호 없이 사용할 수 있습니다. 숫자를 지정하지 않으면 내부적으로 해당 항목에 할당됩니다. Patch0, Patch1, Patch2, Patch3 등을 사용하여 명시적으로 숫자를 지정할 수도 있습니다. 이러한 패치는 %patch0, %patch1, %patch2 매크로 등을 사용하여 하나씩 적용할 수 있습니다. 매크로는 RPM SPEC 파일의 body 섹션에 있는 %prep 지시문 내에 적용됩니다. 또는 %autopatch 매크로를 사용하면 SPEC 파일에 지정된 순서에 따라 모든 패치를 자동으로 적용할 수 있습니다. |
|
패키지가 아키텍처에 의존하지 않는 경우 예를 들어 해석된 프로그래밍 언어로 전적으로 작성된 경우 이를 |
|
컴파일된 언어로 작성된 프로그램을 빌드하는 데 필요한 쉼표 또는 공백으로 구분된 패키지 목록입니다. |
|
소프트웨어를 설치한 후 실행하는 데 필요한 쉼표 또는 공백으로 구분된 패키지 목록입니다. SPEC 파일의 자체 행에는 여러 개의 |
| 특정 프로세서 아키텍처에서 소프트웨어가 작동할 수 없는 경우 여기에서 해당 아키텍처를 제외할 수 있습니다. |
|
|
|
이 지시문은 |
|
|
Name
,Version
및 Release
지시문은 RPM 패키지의 파일 이름을 구성합니다. RPM 패키지 파일 이름에 NAME-VERSION-RELEASE
형식이 있기 때문에 RPM 패키지 관리자 및 시스템 관리자는 이러한 세 개의 지시문 N-V-R 또는 NVR 을 호출하는 경우가 많습니다.
다음 예제에서는 rpm
명령을 쿼리하여 특정 패키지에 대한 NVR 정보를 가져오는 방법을 보여줍니다.
예 4.1. bash 패키지에 대한 NVR 정보를 제공하기 위해 rpm 쿼리
# rpm -q bash bash-4.4.19-7.el8.x86_64
bash
는 패키지 이름이고 4.4.19
는 버전이며 7.el8
은 릴리스입니다. 최종 마커는 아키텍처에 신호를 보내는 x86_64
입니다. NVR 과 달리 아키텍처 마커는 RPM 패키지러를 직접 제어할 수 없지만 rpmbuild
빌드 환경에 의해 정의됩니다. 이에 대한 예외는 아키텍처 독립적인 noarch
패키지입니다.
4.2.2. 본문 항목
다음은 RPM SPEC 파일의 Body 섹션에
사용된 항목입니다.
표 4.2. RPM SPEC 파일의 body 섹션에서 사용되는 항목
SPEC 조건 | 정의 |
---|---|
| RPM에 패키지된 소프트웨어에 대한 전체 설명입니다. 이 설명은 여러 행에 걸쳐 있을 수 있으며 단락으로 나눌 수 있습니다. |
|
빌드할 소프트웨어를 준비하는 명령 또는 일련의 명령(예: |
| 소프트웨어를 머신 코드(컴파일된 언어의 경우) 또는 바이트 코드(일부 해석 언어의 경우)로 빌드하는 명령 또는 일련의 명령입니다. |
|
|
| 소프트웨어를 테스트하기 위한 명령 또는 일련의 명령. 여기에는 일반적으로 단위 테스트와 같은 사항이 포함됩니다. |
| 최종 사용자의 시스템에 삽입될 파일 목록입니다. |
|
다른 |
4.2.3. 고급 항목
SPEC 파일에는 Scriptlets 또는 Trigger 와 같은 고급 항목도 포함될 수 있습니다.
이는 빌드 프로세스가 아닌 최종 사용자의 시스템에 설치 프로세스 중 다른 시점에서 적용됩니다.