Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
В этом примере при необходимости создаются каталоги для файлов, а затем устанавливаются исполняемый файл myapp и интерактивное справочное руководство myapp.1. Переменная окружения
$RPM_BUILD_ROOTBuildroot%{_bindir}%{_mandir}Если вы пользуетесь сценарием configure для создания make-файла, все разнообразные каталоги в нем будут заданы должным образом. В большинстве случаев вам не придется задать все команды установки вручную, как. показано в предыдущем примере.
Задание
%cleanrpmbuild%cleanrm -rf $RPM_BUILD_ROOTПосле описания построения пакета следует задать все файлы, которые будут устанавливаться. RPM-система очень строга на этот счет. Она и должна быть строгой для того, чтобы иметь возможность отследить должным образом каждый файл в каждом пакете. В секции
%files%files%{_bindir}/myapp%{_mandir}/myapp.1RPM-система может выполнять сценарий до и после установки вашего пакета. Например, если ваш пакет — процесс-демон, для его запуска, возможно, нужна корректировка сценариев установки системы. Сделайте это с помощью сценария
%post%postmail root -s "myapp installed — please register" </dev/nullПоищите примеры в серверных RPM-файлах spec.
Далее приводится полный файл spec для вашего простого приложения.
## spec file for package myapp (Version 1.0)#Vendor: Wrox PressDistribution: AnyName: myappVersion: 1.0Release: 1Packager: [email protected]License: Copyright 2007 Wiley Publishing, Inc.Group: Applications/MediaProvides: goodnessRequires: mysql >=3.23Buildroot: %{_tmppath}/%{name}-%{version}-rootsource: %{name}-%{version}.tar.gzSummary: Trivial application%descriptionMyApp Trivial ApplicationA 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%buildmake%installmkdir -p $RPM_BUILD_ROOT%{bindir}mkdir -p $RPM_BUILD_ROOT%{_mandir}install -m755 myapp $RPM_BUILD_ROOT%{_bindir}/myappinstall -m755 myapp.1 $RPM_BUILD_ROOT%{_mandir}/myapp.1%cleanrm -rf $RPM_BUILD_ROOT%postmail root -s "myapp installed — please register" </dev/null%files%{_bindir}/myapp%{_mandir}/myapp.1Теперь вы готовы к формированию RPM-пакета.
Создаются пакеты с помощью команды
rpmbuildrpmbuild -b<i>BuildStage spec_file</i>Опция
-brpmbuildBuildStagerpmbuildТаблица 9.5
| Опция | Описание |
|---|---|
-ba | Создавать и двоичный, и исходный RPM-пакет |
-bb | Создавать двоичный RPM-пакет |
-bc | Компилировать программу, но не создавать полный RPM-пакет |
-bp | Подготовиться к созданию двоичного RPM-пакета |
-bi | Создать двоичный RPM-пакет и установить его |
-bl | Проверить список файлов RPM-пакета |
-bs | Создать только RPM-пакет исходных файлов |
Для создания двоичного RPM-пакета и пакета исходных файлов используйте опцию
-baСкопируйте RPM-файл spec в корректный каталог SOURCES, поместив его рядом с исходным файлом приложения:
$ <b>cp myapp.spec /usr/src/redhat/SOURCES</b>Далее приведен вывод, сопровождающий создание пакета в системе SUSE Linux, пакеты в которой создаются из каталога /usr/src/packages/SOURCES:
