Как создать пакет RPM

Материал из База знаний проекта Russian Fedora

Перейти к: навигация, поиск

Создание пакетов HOWTO

Здесь отоброженны основы механики, как создавать RPM пакет специально для Fedora (в частности, как создать файл спецификации).

Настройка системы для сборки

Прежде чем создавать RPM пакеты Fedora необходимо установить "Инструменты разработчика" и "Инструменты для разработки RPM"

# yum groupinstall "Development Tools"
# yum install rpmdevtools

Рекомендуется создать нового пользователя в системе специально для создания RPM пакетов. Таким образом, если что-то идет неправильно, например программа или процесс сборки может повредить ваши файлы, или отправить личные файлы в мир. По крайней мере, вы не должны создавать свои пакеты в качестве пользователя root.

Вы можете создать нового пользователя с именем "makerpm" выполнив:

# /usr/sbin/useradd makerpm

Войдите как пользователь (makerpm). Как только вы вошли в систему как пользователь который создает пакеты, создайте структуру каталогов в вашем домашнем каталоге, выполнив:

$ rpmdev-setuptree

"Rpmdev-setuptree" будет создаст каталог ~ / rpmbuild . "rpmbuild" представляют собой набор подкаталогов (например SPECS и BUILD), которые вы будете использовать для создания ваших пакетов. "Rpmdev-setuptree" также создает ~/.rpmmacros файл, для rpm и rpmbuild.


Основы построения пакетов RPM

Для создания пакетов RPM, вам нужно создать текстовый файл c расширением ".spec", который содержит (спецификацию) информацию о программном обеспечении. При запуске "rpmbuild" будет исполнять команды файла спецификации, которые производят пошаговое производство пакетов.

Вы должны поместить оригинальный (нетронутой) исходник, например tar.gz файл в "~ /rpmbuild/SOURCES" а файл спецификации разместить в "~ /rpmbuild/SPECS" и назовите его "NAME.spec", где NAME является базовым именем пакета. Для создания всех пакетов, как бинарных и пакетов с исходном кодом, войдите в каталог "~/rpmbuild/SPECS" и выполните команду:

rpmbuild -ba NAME.spec

При вызове rpmbuild будет читать файл спецификации и попытается пройти следующие этапы (Имена предопределённых макросов начинаются с% , как описано ниже).:

Этап Читает Записывает Действия

%prep  %_sourcedir  %_builddir Читает исходники и исправления с каталога %_sourcedir (~/rpmbuild SOURCES). Распаковывает исходники в каталог для сборки %_builddir (~/rpmbuild/BUILD/) и применяет патчи.

%build  %_builddir  %_builddir Компилирует файлы в каталоге %_builddir (~/rpmbuild/BUILD/). Осуществляется путём запуска "./configure ; make".

%check  %_builddir  %_builddir Убедитесь, что программа работает правильно. Осуществляется путём запуска "make test". Многие пакеты не поддерживают этот этап.

%install  %_builddir  %_buildrootdi Читает файлы из каталога %_builddir (~/rpmbuild/BUILD/) и записывает в каталог %_buildrootdir (~/rpmbuild/BUILDROOT). Создаются бинарные файлы для пакета. Остерегайтесь терминологии: %_builddir не тоже, что %_buildrootdir. Это часто осуществляется с помощью команды "make install"

bin  %_buildrootdir  %_rpmdir Это читает файлы из каталога %_buildrootdir (~/rpmbuild/BUILDROOT) для создания бинарных пакетов в каталог %_rpmdir ( ~/rpmbuild/RPMS/). Внутри каталога, каталог для каждой архитектуры, и "noarch" директория для пакетов, которые применяются к любой архитектуре. Эти файлы RPM пакетов для пользователей.

src  %_sourcedir %_srcrpmdir Это создаёт исходный RPM (.src.rpm) в каталог %_srcrpmdir (~/rpmbuild/SRPMS). Эти файлы необходимы для исправлений и обновления пакетов.

Есть определённые каталоги для rpmbuild. К ним относятся:

Имя макроса Название Расположение Описание

%_specdir Каталог спецификаций ~/rpmbuild/SPECS RPM спецификации, файлы (.spec)

%_sourcedir Каталог исходников ~/rpmbuild/SOURCES Исходные пакеты (e.g., tarballs) и патчи

%_builddir

Страница находится в работе
Ответственный: не указан