|
|
Строка 25: |
Строка 25: |
| $ rpmbuild --help | | $ rpmbuild --help |
| | | |
− | ==Подготовка структуры каталогов==
| |
| | | |
− | Для сборки пакетов в домашнем каталоге пользователя необходимо создать каталог '''rpmbuild''', в которой должны быть следующие подкаталоги: '''BUILD, RPMS, SOURCES, SPECS, SRPMS'''. Это можно сделать вручную или командой:
| |
− |
| |
− | # rpmdev-setuptree
| |
− |
| |
− | В итоге должна получиться следующая структура:
| |
− |
| |
− | /home/user/rpmbuild/
| |
− |
| |
− | |-- BUILD<br>
| |
− | |-- RPMS<br>
| |
− | |-- SOURCES<br>
| |
− | |-- SPECS<br>
| |
− | `-- SRPMS
| |
− |
| |
− | ==Подготовка spec-файла==
| |
− |
| |
− | Следующий необходимый элемент — это spec-файл, своего рода инструкция, по которой rpm-build производит сборку пакета.
| |
− |
| |
− | Структура spec-файла подразделяется на заголовки и секции тела.
| |
− |
| |
− | '''Name''' — базовое имя собираемого пакета, которое должно совпадать с именем spec-файла.<br>
| |
− | '''Version''' — номер версии пакета.<br>
| |
− | '''Release''' — релиз-номер пакета. Обычно устанавливают начальное значение в 1% {? Dist} и увеличивают его с каждым новым выпуском пакета.<br>
| |
− | '''Summary''' — краткое однострочное описание пакета.<br>
| |
− | '''License''' — лицензия, согласно которой распространяется пакет.<br>
| |
− | '''URL''' — полный URL для получения дополнительной информации о программе. Чаще всего это веб-сайт исходного проекта.<br>
| |
− | '''Source0''' — путь или URL-адрес заархивированных файлов исходного кода (тарболов). При необходимости можно добавить дополнительные источники SourceX, увеличивая число каждый раз, например: Source1, Source2, Source3 и т.д.<br>
| |
− | '''Patch0''' — патчи и исправления для исходного кода. Патчей может быть несколько, как и исходников. Patch1, Patch2, Patch3 и т.д.<br>
| |
− | '''BuildArch''' — архитектура, под которую будет собран пакет. Если пакет не зависит от архитектуры, например, он написан полностью на интерпретируемом языке программирования, необходимо установить значение BuildArch: noarch. Если значение не установлено, то пакет наследует архитектуру системы, в которой он собирается.<br>
| |
− | '''BuildRequires''' — раздел, в котором через пробелы или запятые перечисляются все зависимые пакеты, необходимые для сборки нашего пакета.
| |
− |
| |
− | '''%description''' — полное описание собираемого пакета. Может занимать несколько строк и может быть разбито на абзацы.<br>
| |
− | '''%prep''' — команда или серия команд для подготовки исходного кода к сборке, например, распаковка архива в Source0. Здесь могут находиться bash-скрипты.<br>
| |
− | '''%build''' — команды или серия команд из данной секции отвечают за непосредственную сборку пакета.<br>
| |
− | '''%install''' — команда или серия команд из данной секции отвечают за то, чтобы сделать собранный пакет полностью готовым к установке на пользовательскую систему.<br>
| |
− | '''%files''' — список файлов, необходимых для сборки пакета.<br>
| |
− | '''%changelog''' — журнал изменений, произошедших с пакетом от релиза к релизу.
| |
− |
| |
− | После того, как spec-файл будет готов, его необходимо переместить в каталог SPECS, а исходные коды собираемого пакета, тарболы, в каталог SOURCES.
| |
− |
| |
− | '''Пример spec-файла'''
| |
− |
| |
− | Name: example
| |
− | Version: 1.0
| |
− | Release: 1%{?dist}
| |
− | Summary: Example project
| |
− |
| |
− | License: GPLv3+
| |
− | URL: https://www.example.com/%{name}
| |
− | Source0: https://www.example.com/%{name}/releases/%{name}-%{version}.tar.gz
| |
− |
| |
− | Patch0: example.patch
| |
− |
| |
− | BuildRequires: gcc
| |
− | BuildRequires: make
| |
− |
| |
− | %description
| |
− | The long-tail description for our Example project
| |
− |
| |
− | %prep
| |
− | %setup -q
| |
− |
| |
− | %patch0
| |
− |
| |
− | %build
| |
− | make %{?_smp_mflags}
| |
− |
| |
− | %install
| |
− | %make_install
| |
− |
| |
− | %files
| |
− | %license LICENSE
| |
− | %{_bindir}/%{name}
| |
− |
| |
− | %changelog
| |
− | * Tue Jan 13 2020 User Name <example@example.org> - 1.0-1
| |
− | - First example package
| |
| | | |
| ==Сборка пакета== | | ==Сборка пакета== |
Версия 14:13, 11 октября 2021
Подготовка к сборке rpm-пакетов
Для сборки rpm-пакета в системе должен быть установлен rpm-build. Проверить его наличие можно следующей командой:
# rpmbuild --version
Если система возвращает: rpmbuild: команда не найдена, значит rpm-build не установлен.
Для установки необходимо выполнить следующую команду:
# sudo yum install rpm-build
Структура команды для сборки должна выглядеть так:
rpmbuild [ПАРАМЕТР…]
Основные параметры сборки:
• -ba – Сборка исходного(.src.rpm) и двоичного(.rpm) пакетов
• -bb – Сборка только двоичного пакета(.rpm)
• -bs – Сборка только пакета с исходниками(.src.rpm)
Остальные параметры можно посмотреть с помощью команды:
$ rpmbuild --help
Сборка пакета
Теперь можно приступать непосредственно к сборке пакета. Находясь в каталоге SPECS необходимо выполнить следующую команду:
# rpmbuild -ba ваш_spec_файл.spec
Результатом выполнения данной команды (если на предыдущих этапах всё было сделано правильно) будет собранный пакет, и в каталоге RPMS появятся бинарный пакет (ваш_пакет.rpm), а в каталоге SRPMS — исходник (ваш_пакет.src.rpm).
Если на выходе нужно получить только .rpm файл или только .src.rpm, то -ba необходимо заменить на -bb или -bs соответственно.