5.4. 사양 파일 작업


새 소프트웨어를 패키징하려면 사양 파일을 생성해야 합니다. 다음 방법 중 하나를 사양 파일을 생성할 수 있습니다.

  • 사양 파일을 처음부터 수동으로 작성합니다.
  • rpmdev-newspec 유틸리티를 사용합니다. 이 유틸리티는 필요한 지시문 및 필드를 채우는 채워지지 않은 사양 파일을 생성합니다.
참고

일부 자격증에 중점을 둔 텍스트 편집기는 자체 사양 템플릿으로 새 사양 파일을 미리 채웁니다. rpmdev-newspec 유틸리티는 텍스트 편집기에 의존하지 않는 방법을 제공합니다.

5.4.1. 샘플 Bash, Python 및 C 프로그램에 대한 새 사양 파일 생성

rpmdev-new spec 유틸리티를 사용하여 Hello World! 프로그램의 세 가지 구현 각각에 대해 사양 파일을 생성할 수 있습니다.

사전 요구 사항

절차

  1. ~/rpmbuild/SPECS 디렉터리로 이동합니다.

    $ cd ~/rpmbuild/SPECS
  2. Hello World! 프로그램의 세 가지 구현 각각에 대한 사양 파일을 생성합니다.

    $ rpmdev-newspec bello
    bello.spec created; type minimal, rpm version >= 4.11.
    
    $ rpmdev-newspec cello
    cello.spec created; type minimal, rpm version >= 4.11.
    
    $ rpmdev-newspec python-pello
    python-pello.spec created; type minimal, rpm version >= 4.11.
    중요

    Python 프로젝트를 RPM에 패키징할 때 항상 프로젝트의 원래 이름에 python- 접두사를 추가합니다. 여기에 프로젝트 이름은 Pello 이고, 따라서 spec 의 이름은 python-pello 입니다.

    ~/rpmbuild/SPECS/ 디렉터리에는 이제 bello. spec ,cello.spec, python-pello.spec 이라는 세 개의 사양 파일이 포함되어 있습니다.

  3. 생성된 파일을 검사합니다.

    파일의 지시문은 사양 파일 정보를 나타냅니다. 다음 섹션에서는 rpmdev-newspec 의 출력 파일에 특정 섹션을 채웁니다.

5.4.2. 원래 사양 파일 수정

rpmdev-new spec 유틸리티로 생성된 원본 출력 사양 파일은 rpmbuild utility. rpmbuild에 필요한 지침을 제공하도록 수정해야 하는 템플릿을 나타냅니다. rpmbuild 는 이러한 지침을 사용하여 RPM 패키지를 빌드합니다.

사전 요구 사항

절차

  1. rpmdev-newspec 유틸리티에서 제공하는 ~/rpmbuild/SPECS/<name>.spec 파일을 엽니다.
  2. spec 파일 Preamble 섹션의 다음 지시문을 채웁니다.

    이름
    name 이 이미 rpmdev-newspec 에 인수로 지정되었습니다.
    버전
    소스 코드의 업스트림 릴리스 버전과 일치하도록 Version 을 설정합니다.
    릴리스 버전
    릴리스 는 자동으로 1%{?dist} 로 설정되며 처음 1 입니다.
    요약
    패키지에 대한 한 줄 설명을 입력합니다.
    라이센스
    소스 코드와 관련된 소프트웨어 라이센스를 입력합니다.
    URL
    업스트림 소프트웨어 웹 사이트의 URL을 입력합니다. 일관성을 위해 %{name} RPM 매크로 변수를 사용하고 https://example.com/%{name} 형식을 사용합니다.
    소스

    업스트림 소프트웨어 소스 코드에 대한 URL을 입력합니다. 패키지되는 소프트웨어 버전에 직접 연결합니다.

    참고

    이 문서의 예제 URL에는 향후 변경될 수 있는 하드 코드된 값이 포함되어 있습니다. 마찬가지로 릴리스 버전도 변경될 수 있습니다. 이러한 잠재적인 변경 사항을 단순화하려면 %{name}%{version} 매크로를 사용합니다. 이러한 매크로를 사용하면 사양 파일에서 하나의 필드만 업데이트해야 합니다.

    BuildRequires
    패키지에 대한 빌드 시간 종속 항목을 지정합니다.
    필수 항목
    패키지에 대한 런타임 종속 항목을 지정합니다.
    BuildArch
    소프트웨어 아키텍처를 지정합니다.
  3. spec 파일 Body 섹션의 다음 지시문을 채웁니다. 이러한 지시문은 여러 줄, 다중 설명 또는 스크립팅된 작업을 정의할 수 있으므로 이러한 지시문을 섹션 제목으로 간주할 수 있습니다.

    %Description
    소프트웨어에 대한 전체 설명을 입력합니다.
    %Prep
    빌드용 소프트웨어를 준비하려면 명령 또는 일련의 명령을 입력합니다.
    %build
    소프트웨어 빌드를 위한 명령 또는 일련의 명령을 입력합니다.
    %install
    rpmbuild 명령에 소프트웨어를 BUILDROOT 디렉터리에 설치하는 방법에 대한 명령 또는 일련의 명령을 입력합니다.
    %files
    RPM 패키지에서 제공하는 파일 목록을 시스템에 설치합니다.
    %changelog

    패키지의 각 Version-Release 에 대한 datestamped 항목 목록을 입력합니다.

    별표(*) 문자 뒤에 Day -of-Week Day Name Surname <email> - Version-Release 를 사용하여 %changelog 섹션의 첫 번째 행을 시작합니다.

    실제 변경 항목은 다음 규칙을 따릅니다.

    • 각 변경 항목에는 각 변경 사항에 대해 하나씩 여러 항목이 포함될 수 있습니다.
    • 각 항목은 새 줄에서 시작됩니다.
    • 각 항목은 하이픈(-) 문자로 시작합니다.

이제 필요한 프로그램에 대한 전체 사양 파일을 작성했습니다.

5.4.3. 샘플 Bash 프로그램의 사양 파일 예

참조를 위해 bash 작성된 벨로 프로그램에 다음 예제 사양 파일을 사용할 수 있습니다.

bash로 작성된 프로그램의 사양 파일 예

Name:           bello
Version:        0.1
Release:        1%{?dist}
Summary:        Hello World example implemented in bash script

License:        GPLv3+
URL:            https://www.example.com/%{name}
Source0:        https://www.example.com/%{name}/releases/%{name}-%{version}.tar.gz

Requires:       bash

BuildArch:      noarch

%description
The long-tail description for our Hello World Example implemented in
bash script.

%prep
%autosetup

%build

%install

mkdir -p %{buildroot}/%{_bindir}

install -m 0755 %{name} %{buildroot}/%{_bindir}/%{name}

%files
%license LICENSE
%{_bindir}/%{name}

%changelog
* Tue May 31 2016 Adam Miller <maxamillion@fedoraproject.org> - 0.1-1
- First bello package
- Example second item in the changelog for version-release 0.1-1

  • 패키지에 대한 빌드 시간 종속성을 지정하는 BuildRequires 지시문이 bello 빌드 단계가 없기 때문에 삭제되었습니다. Bash는 원시 해석된 프로그래밍 언어이며 파일은 시스템의 위치에만 설치됩니다.
  • 패키지에 대한 런타임 종속성을 지정하는 Requires 지시문에는 bello 스크립트를 실행하기 위해 bash 쉘 환경만 필요하므로 bash 만 포함됩니다.
  • %autosetup 매크로는 Source0 지시문에서 참조하는 소스 아카이브의 압축을 풀고 변경합니다.
  • bash 스크립트를 빌드할 필요가 없기 때문에 소프트웨어 빌드 방법을 지정하는 %build 섹션은 비어 있습니다.
참고

벨로를 설치하려면 대상 디렉터리를 생성하고 실행 가능한 bash 스크립트 파일을 설치해야 합니다. 따라서 %install 섹션에서 install 명령을 사용할 수 있습니다. RPM 매크로를 사용하여 하드 코딩 경로 없이 이 작업을 수행할 수 있습니다.

5.4.4. Python으로 작성된 프로그램의 사양 파일 예

참조용으로 Python 프로그래밍 언어로 작성된 pello 프로그램에 다음 예제 사양 파일을 사용할 수 있습니다.

Python으로 작성된 프로그램에 대한 사양 파일의 예

%global python3_pkgversion 3.12                                       
1


Name:           python-pello                                          
2

Version:        1.0.2
Release:        1%{?dist}
Summary:        Example Python library

License:        MIT
URL:            https://github.com/fedora-python/Pello
Source:         %{url}/archive/v%{version}/Pello-%{version}.tar.gz

BuildArch:      noarch
BuildRequires:  python%{python3_pkgversion}-devel                     
3


# Build dependencies needed to be specified manually
BuildRequires:  python%{python3_pkgversion}-setuptools

# Test dependencies needed to be specified manually
# Also runtime dependencies need to be BuildRequired manually to run tests during build
BuildRequires:  python%{python3_pkgversion}-pytest >= 3


%global _description %{expand:
Pello is an example package with an executable that prints Hello World! on the command line.}

%description %_description

%package -n python%{python3_pkgversion}-pello                         
4

Summary:        %{summary}

%description -n python%{python3_pkgversion}-pello %_description


%prep
%autosetup -p1 -n Pello-%{version}


%build
# The macro only supported projects with setup.py
%py3_build                                                            
5



%install
# The macro only supported projects with setup.py
%py3_install


%check                                                                
6

%{pytest}


# Note that there is no %%files section for the unversioned python module
%files -n python%{python3_pkgversion}-pello
%doc README.md
%license LICENSE.txt
%{_bindir}/pello_greeting

# The library files needed to be listed manually
%{python3_sitelib}/pello/

# The metadata files needed to be listed manually
%{python3_sitelib}/Pello-*.egg-info/

%changelog
* Tue May 31 2016 Adam Miller <maxamillion@fedoraproject.org> - 1.0.2-1
- First pello package

1
python3_pkgversion 매크로를 정의하면 이 패키지가 빌드할 Python 버전을 설정합니다. 기본 Python 버전 3.9를 빌드하려면 매크로를 기본값 3 으로 설정하거나 행을 완전히 제거합니다.
2
Python 프로젝트를 RPM에 패키징할 때 항상 프로젝트의 원래 이름에 python- 접두사를 추가합니다. 원래 이름은 pello 이므로 소스 RPM(SRPM)의 이름은 python-pello 입니다.
3
BuildRequires 지시문은 이 패키지를 빌드하고 테스트하는 데 필요한 패키지를 지정합니다. BuildRequires 에서 항상 Python 패키지를 빌드하는 데 필요한 도구를 제공하는 항목이 포함되어 있습니다. python3-devel (또는 python3.11-devel 또는 python3.12-devel)과 같은 특정 소프트웨어에 필요한 관련 패키지 (예: python3-setuptools 또는 python3.11-setuptools ) 또는 %check 섹션에서 테스트를 실행하는 데 필요한 런타임 및 테스트 종속 항목을 포함합니다.
4
바이너리 RPM의 이름(사용자가 설치할 수 있는 패키지)을 선택할 때 버전 지정된 Python 접두사를 추가합니다. 기본 Python 3.9, Python 3.11용 python3.11- 접두사 또는 Python 3.12용 python3.12- 접두사에 python3- 접두사를 사용합니다. 명시적 버전으로 설정하지 않는 한 기본 Python 버전 3.9에 대해 3 으로 평가되는 %{python3_pkgversion} 매크로를 사용할 수 있습니다(예: 3.11 참조).
5
%py3_build%py3_install 매크로는 설치 위치, 사용할 인터프리터 및 기타 세부 정보를 지정하는 추가 인수와 함께 setup.py buildsetup.py install 명령을 각각 실행합니다.
6
%check 섹션은 패키지된 프로젝트의 테스트를 실행해야 합니다. 정확한 명령은 프로젝트 자체에 따라 다르지만 %pytest 매크로를 사용하여 RPM에 친숙한 방식으로 pytest 명령을 실행할 수 있습니다.

5.4.5. 샘플 C 프로그램에 대한 사양 파일 예

참조용으로 C 프로그래밍 언어로 작성된 cello 프로그램에 다음 예제 사양 파일을 사용할 수 있습니다.

C로 작성된 프로그램에 대한 사양 파일의 예

Name:           cello
Version:        1.0
Release:        1%{?dist}
Summary:        Hello World example implemented in C

License:        GPLv3+
URL:            https://www.example.com/%{name}
Source0:        https://www.example.com/%{name}/releases/%{name}-%{version}.tar.gz

Patch0:         cello.patch

BuildRequires:  gcc
BuildRequires:  make

%description
The long-tail description for our Hello World Example implemented in
C.

%prep
%autosetup

%patch0

%build
make %{?_smp_mflags}

%install
%make_install

%files
%license LICENSE
%{_bindir}/%{name}

%changelog
* Tue May 31 2016 Adam Miller <maxamillion@fedoraproject.org> - 1.0-1
- First cello package

  • 패키지에 대한 빌드 시간 종속성을 지정하는 BuildRequires 지시문에는 컴파일 빌드 프로세스를 수행하는 데 필요한 다음 패키지가 포함됩니다.

    • gcc
    • make
  • 패키지에 대한 런타임 종속성을 지정하는 Requires 지시문은 이 예에서 생략됩니다. 모든 런타임 요구 사항은 rpmbuild 에 의해 처리되며 cello 프로그램에는 코어 C 표준 라이브러리 외부에 아무것도 필요하지 않습니다.
  • %autosetup 매크로는 Source0 지시문에서 참조하는 소스 아카이브의 압축을 풀고 변경합니다.
  • %build 섹션은 이 예제에서 cello 프로그램의 Makefile 파일이 작성되었음을 반영합니다. 따라서 GNU make 명령을 사용할 수 있습니다. 그러나 구성 스크립트를 제공하지 않았기 때문에 %configure 에 대한 호출을 제거해야 합니다.

%make_install 매크로를 사용하여 cello 프로그램을 설치할 수 있습니다. 이는 cello 프로그램에 대한 Makefile 파일을 사용할 수 있기 때문에 가능합니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동