Создание RPM-пакетов из простых файлов на примерах
Делать готовые установочные сборки пакетов очень опасно от пользователя root. Если мы допустим ошибку с путями, файлы могут перетереть или удалить важные для работы директории. Стоит создать отдельного пользователя и работать под ним.
Что должно быть в системе для сборки rpm-пакета:
# dnf install gcc gcc-c++ rpmrebuild rpm-build rpmdevtools rpmlint dnf-utils git libtool
Создадим структуру каталогов для сборки (создаётся в домашней папке):
$ rpmdev-setuptree
Файлы кладём в каталог rpmbuild/SOURCES. Скачиваем архив и распаковываем. Ссылка на файлы:
Создаём файл naval-battle.spec и кладём в каталог rpmbuild/SPECS:
Name: naval-battle
Version: 1
Release: 1
Summary: Морской бой (игра)
License: -
Source0: naval-battle.desktop
Source1: naval-battle.png
Source2: naval-battle.sh
BuildArch: noarch
%description
Игра для двух участников, в которой игроки по очереди называют, сообщают иным способом, координаты на карте соперника. Если у врага с этими координатами имеется "корабль", то корабль или его палуба (дека) убивается, попавший делает еще один ход. Цель игрока: первым убить все игровые "корабли" врага Партии.
%install
install -D -pm 644 %{SOURCE0} %{buildroot}/usr/share/applications/naval-battle.desktop
install -D -pm 644 %{SOURCE1} %{buildroot}/opt/game/naval-battle.png
install -D -pm 755 %{SOURCE2} %{buildroot}/opt/game/naval-battle.sh
%files
/
Рассмотрим секцию %install. Здесь, при необходимости, мы устанавливаем права доступа к файлам. Затем мы копируем файлы из папки rpmbuild/SOURCES в папку rpmbuild/BUILDROOT. Поскольку BUILDROOT эмулирует корень файловой системы, мы указываем точный путь для копирования.
И собираем rpm (Двоичный пакет):
$ rpmbuild -bb rpmbuild/SPECS/naval-battle.spec
или src.rpm (Исходный пакет):
$ rpmbuild -ba rpmbuild/SPECS/naval-battle.spec
Готово! Теперь у нас есть простой шаблон файла spec для создания RPM из простых файлов.