검색

4.5. 사양 파일 작업

download PDF

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

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

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

4.5.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 pello
    pello.spec created; type minimal, rpm version >= 4.11.

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

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

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

4.5.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 섹션의 첫 번째 행을 시작합니다.

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

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

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

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

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

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

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
%setup -q

%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 만 포함됩니다.
  • bash 스크립트를 빌드할 필요가 없기 때문에 소프트웨어 빌드 방법을 지정하는 %build 섹션은 비어 있습니다.
참고

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

추가 리소스

4.5.4. 샘플 Python 프로그램에 대한 사양 파일의 예

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

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

Name:           pello
Version:        0.1.1
Release:        1%{?dist}
Summary:        Hello World example implemented in Python

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

BuildRequires:  python
Requires:       python
Requires:       bash

BuildArch:      noarch

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

%prep
%setup -q

%build

python -m compileall %{name}.py

%install

mkdir -p %{buildroot}/%{_bindir}
mkdir -p %{buildroot}/usr/lib/%{name}

cat > %{buildroot}/%{_bindir}/%{name} <<EOF
#!/bin/bash
/usr/bin/python /usr/lib/%{name}/%{name}.pyc
EOF

chmod 0755 %{buildroot}/%{_bindir}/%{name}

install -m 0644 %{name}.py* %{buildroot}/usr/lib/%{name}/

%files
%license LICENSE
%dir /usr/lib/%{name}/
%{_bindir}/%{name}
/usr/lib/%{name}/%{name}.py*

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

  • 패키지의 런타임 종속 항목을 지정하는 Requires 지시문에는 다음 두 가지 패키지가 포함되어 있습니다.

    • python 패키지는 런타임 시 바이트로 컴파일된 코드를 실행하는 데 필요합니다.
    • small entry-point 스크립트를 실행하는 데 필요한 bash 패키지입니다.
  • 패키지의 빌드 시간 종속성을 지정하는 BuildRequires 지시문에는 python 패키지만 포함됩니다. pello 프로그램을 사용하려면 python 이 바이트 컴파일 빌드 프로세스를 수행해야 합니다.
  • 소프트웨어를 빌드하는 방법을 지정하는 %build 섹션은 바이트로 컴파일된 버전의 스크립트를 생성합니다. 실제 패키지에서는 일반적으로 사용되는 배포에 따라 자동으로 수행됩니다.
  • %install 섹션은 바이트로 컴파일된 파일을 시스템의 라이브러리 디렉터리에 설치해야 하므로 액세스할 수 있습니다.

spec 파일에 래퍼 스크립트를 인라인으로 생성하는 예에서는 사양 파일 자체를 스크립팅할 수 있음을 보여줍니다. 이 래퍼 스크립트는 여기 문서를 사용하여 Python 바이트로 컴파일된 코드를 실행합니다.

추가 리소스

4.5.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-output-first-patch.patch

BuildRequires:  gcc
BuildRequires:  make

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

%prep
%setup -q

%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 표준 라이브러리 외부에 아무것도 필요하지 않습니다.
  • %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은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.