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
$ cd ~/rpmbuild/SPECS
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Hello World!
프로그램의 세 가지 구현 각각에 대한사양
파일을 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~/rpmbuild/SPECS/
디렉터리에는 이제bello.
,spec
cello.spec
,pello.spec
이라는 세 개의 사양 파일이 포함되어 있습니다.생성된 파일을 검사합니다.
파일의 지시문은 사양 파일 정보를 나타냅니다. 다음 섹션에서는
rpmdev-newspec
의 출력 파일에 특정 섹션을 채웁니다.
4.5.2. 원래 사양 파일 수정 링크 복사링크가 클립보드에 복사되었습니다!
rpmdev-new
유틸리티로 생성된 원본 출력 사양 파일은 spec
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 프로그램의 사양 파일 예
-
llo
에 대한 빌드 시간 종속 항목을 지정하는BuildRequires
지시문이 삭제되었습니다. Bash는 원시 해석 프로그래밍 언어이며 파일은 시스템의 위치에 설치됩니다. -
패키지에 대한 런타임 종속성을 지정하는
Requires
지시문에는bello
스크립트를 실행하기 위해bash
쉘 환경만 필요하므로bash
만 포함됩니다. -
bash
스크립트를 빌드할 필요가 없기 때문에 소프트웨어 빌드 방법을 지정하는%build
섹션은 비어 있습니다.
벨로를 설치하려면 대상 디렉터리를 생성하고 실행 가능한 bash
스크립트 파일을 설치해야 합니다. 따라서
%install
섹션에서 install
명령을 사용할 수 있습니다. RPM 매크로를 사용하여 하드 코딩 경로 없이 이 작업을 수행할 수 있습니다.
4.5.4. 샘플 Python 프로그램에 대한 사양 파일의 예 링크 복사링크가 클립보드에 복사되었습니다!
참조용으로 Python 프로그래밍 언어로 작성된 pello 프로그램에 다음 예제 사양
파일을 사용할 수 있습니다.
Python으로 작성된 pello 프로그램의 사양 파일 예
패키지에 대한 런타임 종속성을 지정하는
Requires
지시문에는 다음 두 가지 패키지가 포함됩니다.-
python
패키지는 런타임 시 바이트로 컴파일된 코드를 실행하는 데 필요합니다. -
small entry-point 스크립트를 실행하는 데 필요한
bash
패키지입니다.
-
-
패키지의 build-time 종속 항목을 지정하는
BuildRequires
지시문에는python
패키지만 포함됩니다.pello
프로그램을 사용하려면python
이 바이트 컴파일 빌드 프로세스를 수행해야 합니다. -
소프트웨어를 빌드하는 방법을 지정하는
%build
섹션은 바이트로 컴파일된 버전의 스크립트를 생성합니다. 실제 패키지에서는 일반적으로 사용되는 배포에 따라 자동으로 수행됩니다. -
%install
섹션은 바이트로 컴파일된 파일을 시스템의 라이브러리 디렉터리에 설치해야 하므로 액세스할 수 있습니다.
spec
파일에 래퍼 스크립트를 인라인으로 생성하는 예에서는 사양 파일 자체를 스크립팅할 수 있음을 보여줍니다. 이 래퍼 스크립트는
여기 문서를
사용하여 Python 바이트로 컴파일된 코드를 실행합니다.
4.5.5. 샘플 C 프로그램에 대한 사양 파일 예 링크 복사링크가 클립보드에 복사되었습니다!
참조용으로 C 프로그래밍 언어로 작성된 cello 프로그램에 다음 예제 사양
파일을 사용할 수 있습니다.
C로 작성된 셀오 프로그램에 대한 사양 파일의 예
패키지에 대한 빌드 시간 종속성을 지정하는
BuildRequires
지시문에는 컴파일 빌드 프로세스를 수행하는 데 필요한 다음 패키지가 포함됩니다.-
gcc
-
make
-
-
이 예제에서는 패키지에 대한 런타임 종속 항목을 지정하는
Requires
지시문을 생략합니다. 모든 런타임 요구 사항은rpmbuild
에서 처리하며,cello
프로그램에는 코어 C 표준 라이브러리 이외의 항목이 필요하지 않습니다. -
%build
섹션은 이 예에서 cello 프로그램의Makefile
파일이 작성되었다는 사실을 반영합니다. 따라서 GNU make 명령을 사용할 수 있습니다. 그러나 구성 스크립트를 제공하지 않았기 때문에%configure
에 대한 호출을 제거해야 합니다.
%make_install
매크로를 사용하여 cello 프로그램을 설치할 수 있습니다. 이는 cello 프로그램에 대한 Makefile
파일을 사용할 수 있기 때문에 가능합니다.