Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
В этом примере при необходимости создаются каталоги для файлов, а затем устанавливаются исполняемый файл myapp и интерактивное справочное руководство myapp.1. Переменная окружения
$RPM_BUILD_ROOT
Buildroot
%{_bindir}
%{_mandir}
Если вы пользуетесь сценарием configure для создания make-файла, все разнообразные каталоги в нем будут заданы должным образом. В большинстве случаев вам не придется задать все команды установки вручную, как. показано в предыдущем примере.
Задание
%clean
rpmbuild
%clean
rm -rf $RPM_BUILD_ROOT
После описания построения пакета следует задать все файлы, которые будут устанавливаться. RPM-система очень строга на этот счет. Она и должна быть строгой для того, чтобы иметь возможность отследить должным образом каждый файл в каждом пакете. В секции
%files
%files
%{_bindir}/myapp
%{_mandir}/myapp.1
RPM-система может выполнять сценарий до и после установки вашего пакета. Например, если ваш пакет — процесс-демон, для его запуска, возможно, нужна корректировка сценариев установки системы. Сделайте это с помощью сценария
%post
%post
mail root -s "myapp installed — please register" </dev/null
Поищите примеры в серверных RPM-файлах spec.
Далее приводится полный файл spec для вашего простого приложения.
#
# spec file for package myapp (Version 1.0)
#
Vendor: Wrox Press
Distribution: Any
Name: myapp
Version: 1.0
Release: 1
Packager: [email protected]
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" </dev/null
%files
%{_bindir}/myapp
%{_mandir}/myapp.1
Теперь вы готовы к формированию RPM-пакета.
Создаются пакеты с помощью команды
rpmbuild
rpmbuild -b<i>BuildStage spec_file</i>
Опция
-b
rpmbuild
BuildStage
rpmbuild
Таблица 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: