4.5. 사양 파일 작업
새 소프트웨어를 패키징하려면 사양
파일을 생성해야 합니다. 다음 방법 중 하나를 사양
파일을 생성할 수 있습니다.
-
새
사양
파일을 처음부터 수동으로 작성합니다. -
rpmdev-newspec
유틸리티를 사용합니다. 이 유틸리티는 필요한 지시문 및 필드를 채우는 채워지지 않은사양
파일을 생성합니다.
일부 자격증에 중점을 둔 텍스트 편집기는 자체 사양
템플릿으로 새 사양
파일을 미리 채웁니다. rpmdev-newspec
유틸리티는 편집기와 무관한 방법을 제공합니다.
4.5.1. 샘플 Bash, Python 및 C 프로그램에 대한 새 사양 파일 생성
rpmdev-new
유틸리티를 사용하여 spec
Hello World!
프로그램의 세 가지 구현 각각에 대해 사양 파일을 생성할 수 있습니다.
사전 요구 사항
다음
Hello World!
프로그램 구현은~/rpmbuild/SOURCES
디렉터리에 배치되었습니다.
절차
~/rpmbuild/SPECS
디렉터리로 이동합니다.$ cd ~/rpmbuild/SPECS
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
이라는 세 개의 사양 파일이 포함되어 있습니다.생성된 파일을 검사합니다.
파일의 지시문은 사양 파일 정보를 나타냅니다. 다음 섹션에서는
rpmdev-newspec
의 출력 파일에 특정 섹션을 채웁니다.
4.5.2. 원래 사양 파일 수정
rpmdev-new
유틸리티로 생성된 원본 출력 사양 파일은 spec
rpmbuild
utility. rpmbuild에 필요한 지침을 제공하도록 수정해야 하는 템플릿을 나타냅니다. rpmbuild
는 이러한 지침을 사용하여 RPM 패키지를 빌드합니다.
사전 요구 사항
-
rpm
파일이 생성되었습니다. 자세한 내용은 샘플 Bash, Python 및 C 프로그램에 대한 새 사양 파일 생성 을 참조하십시오.dev-new
spec 사양spec
유틸리티를 사용하여 채워지지 않은 ~/rpmbuild/SPECS/<name>.
절차
-
rpmdev-newspec
유틸리티에서 제공하는 ~/rpmbuild/SPECS/<name>.spec spec
파일 Preamble 섹션의 다음 지시문을 채웁니다.이름
-
name
이 이미rpmdev-newspec
에 인수로 지정되었습니다. 버전
-
소스 코드의 업스트림 릴리스 버전과 일치하도록
Version
을 설정합니다. 릴리스 버전
-
릴리스
는 자동으로1%{?dist}
로 설정되며 처음1
입니다. 요약
- 패키지에 대한 한 줄 설명을 입력합니다.
라이센스
- 소스 코드와 관련된 소프트웨어 라이센스를 입력합니다.
URL
-
업스트림 소프트웨어 웹 사이트의 URL을 입력합니다. 일관성을 위해
%{name}
RPM 매크로 변수를 사용하고https://example.com/%{name}
형식을 사용합니다. 소스
업스트림 소프트웨어 소스 코드에 대한 URL을 입력합니다. 패키지되는 소프트웨어 버전에 직접 연결합니다.
참고이 문서의 예제 URL에는 향후 변경될 수 있는 하드 코드된 값이 포함되어 있습니다. 마찬가지로 릴리스 버전도 변경될 수 있습니다. 이러한 잠재적인 변경 사항을 단순화하려면
%{name}
및%{version}
매크로를 사용합니다. 이러한 매크로를 사용하면사양
파일에서 하나의 필드만 업데이트해야 합니다.BuildRequires
- 패키지에 대한 빌드 시간 종속 항목을 지정합니다.
필수 항목
- 패키지에 대한 런타임 종속 항목을 지정합니다.
BuildArch
- 소프트웨어 아키텍처를 지정합니다.
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
파일을 사용할 수 있기 때문에 가능합니다.
추가 리소스