После того как параметр Buildrootзадан, устанавливайте ваши приложения в каталог из параметра Buildroot. Можно использовать удобную переменную $RPM_BUILD_ROOT, которая задается для всех сценариев командной оболочки в файле spec.
После задания всех этих характеристик пакета далее нужно определить, как собирать пакет. Для этого есть четыре основные секции: %prep, %build, %installи %clean.
Судя по имени, секция %prepпредназначена для подготовки сборки. В большинстве случаев вы можете выполнить приведенный далее макрос %setupс параметром -qдля перевода его в режим без вывода сообщений:
%prep
%setup -q
Секция %buildсобирает ваше приложение. В большинстве случаев можно применять простую команду make. Например:
%build
make
Это один из способов, которым RPM-система использует уже проделанную вами работу по созданию make-файла.
Секция %installустанавливает ваше приложение, интерактивное справочное руководство и любые файлы поддержки. Вы можете применить RPM-макрос %makeinstall, который вызывает задание installmake-файла. Тем не менее, в данном случае установим файлы вручную, чтобы продемонстрировать дополнительные RPM-макросы:
%install
mkdir -р $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_mandir}
install -m755 myapp $RPM_BUILD_ROOT%{_bindir}/myapp
install -m755 myapp.1 $RPM_BUILD_ROOT%{_mandir}/myapp.1
В этом примере при необходимости создаются каталоги для файлов, а затем устанавливаются исполняемый файл myapp и интерактивное справочное руководство myapp.1. Переменная окружения $RPM_BUILD_ROOTсодержит местоположение Buildroot, заданное ранее. Макросы %{_bindir}и %{_mandir}замещаются текущим каталогом двоичных файлов и каталогом страниц интерактивного справочного руководства соответственно.
Примечание
Если вы пользуетесь сценарием configure для создания make-файла, все разнообразные каталоги в нем будут заданы должным образом. В большинстве случаев вам не придется задать все команды установки вручную, как. показано в предыдущем примере.
Задание %cleanудаляет файлы, созданные командой rpmbuild. Например:
%clean
rm -rf $RPM_BUILD_ROOT
После описания построения пакета следует задать все файлы, которые будут устанавливаться. RPM-система очень строга на этот счет. Она и должна быть строгой для того, чтобы иметь возможность отследить должным образом каждый файл в каждом пакете. В секции %filesперечисляются имена всех файлов, включаемых в пакет. В данном случае у нас только два файла предназначены для распространения в двоичном пакете: исполняемый файл myapp и страница интерактивного справочного руководства myapp.1. Например:
%files
%{_bindir}/myapp
%{_mandir}/myapp.1
RPM-система может выполнять сценарий до и после установки вашего пакета. Например, если ваш пакет — процесс-демон, для его запуска, возможно, нужна корректировка сценариев установки системы. Сделайте это с помощью сценария %post. Далее приведен простой пример, отправляющий сообщение по электронной почте:
%post
mail root -s "myapp installed — please register"
Поищите примеры в серверных RPM-файлах spec.
Далее приводится полный файл spec для вашего простого приложения.
#
# spec file for package myapp (Version 1.0)
#
Vendor: Wrox Press
Distribution: Any
Name: myapp
Version: 1.0
Release: 1
Packager: neil@provider.com
License: Copyright 2007 Wiley Publishing, Inc.
Group: Applications/Media
Provides: goodness
Requires: mysql >=3.23
Buildroot: %{_tmppath}/%{name}-%{version}-root
source: %{name}-%{version}.tar.gz
Summary: Trivial application
%description
MyApp Trivial Application
A trivial application used to demonstrate development tools.
This version pretends it requires MySQL at or above 3.23.
Authors: Neil Matthew and Richard Stones
%prep
%setup -q
%build
make
%install
mkdir -p $RPM_BUILD_ROOT%{bindir}
mkdir -p $RPM_BUILD_ROOT%{_mandir}
install -m755 myapp $RPM_BUILD_ROOT%{_bindir}/myapp
install -m755 myapp.1 $RPM_BUILD_ROOT%{_mandir}/myapp.1
%clean
rm -rf $RPM_BUILD_ROOT
%post
mail root -s "myapp installed — please register"
%files
%{_bindir}/myapp
%{_mandir}/myapp.1
Теперь вы готовы к формированию RPM-пакета.
Создание RPM-пакета с помощью rpmbuild
Создаются пакеты с помощью команды rpmbuildсо следующей синтаксической записью:
rpmbuild -b BuildStage spec_file
Опция -bзаставляет rpmbuildсоздать RPM-пакет. Дополнительная опция BuildStage— специальный код, информирующий команду rpmbuildо том, как далеко она может зайти в процессе создания. В табл. 9.5 перечислены опции команды.
Читать дальше