Сборка пакетов RPM для ОС на основе Red Hat (Fedora, CentOS), в моём случае Fedora.
1. Создаём папку пакетов своих программ, например "/home/user/packages"
2. В ранее созданной папке "packages" создаём папку с именем программы, например "create-desktop-file"
3. В папке программы "create-desktop-file" создаём текстовый файл SPEC (или build.spec) и папку "usr" со структурой устанавливаемых файлов программы, то есть в ней будет следующая структура файлов:
/usr/bin/create-desktop-file /usr/share/applications/create-desktop-file.desktop /usr/share/pixmaps/create-desktop-file.png
Шаблон файла SPEC
Name: create-desktop-file-bin Version: 0.1.2 Release: 1 Summary: Create desktop-file Group: Applications/Productivity License: custom BuildArch: x86_64 Requires: gtk3 Requires: xdg-utils URL: https://disk.yandex.ru/d/dlKMs3ABIKrW6w %description Create desktop-file. %install cp -r /home/user/packages/create-desktop-file/usr $RPM_BUILD_ROOT/ %files %defattr(-,root,root) /usr/bin/create-desktop-file /usr/share/applications/create-desktop-file.desktop /usr/share/pixmaps/create-desktop-file.png %changelog
Здесь параметры означают следующее (по сути повторяется смысл, который я описал подробнее для Arch):
Name: имя пакета
Version: версия
Release: индекс пакета
Summary: Краткое описание пакета (не более 72 символа)
Group: Группа в менеджере пакетов (не группа в меню Пуск)
License: лицензия
BuildArch: архитектура
Requires: Зависимости, строка повторяется если зависимостей несколько
URL: ссылка на сайт автора, я указываю на архив программы.
Секция %description содержит описание примерно 4 строки по 72 символа заканчивающиеся точкой.
Секция %install, здесь команда копирования в папку сборки.
Секция %files здесь в первой строке заданы атрибуты файлов по умолчанию, с которыми файлы будут запакованы. Далее идёт перечисление файлов, которые будут установлены, в общем всё что в заготовленной папке usr.
4. Сборка командой
rpmbuild -bb /home/user/packages/create-desktop-file/SPEC
здесь важна команда -dd, это сборка только бинарника, не сборка исходника.
5. После сборки в папке /home/user/rpmbuild/RPMS/x86_64 появится готовый пакет (взависимости от разрядности noarch, x86_64, x86). Папка rpmbuild рабочая папка для сборки, в ней BUILDROOT - временная папка сборки, SRPMS - пакет со сборкой из исходников, но эти папки нам не нужны.
6. Не совсем удобно, что в секции %install у нас прямой путь, возможно нужно создать папку "packages" где нибудь в "rpmbuild", которая имеет переменные %{name}, %{version}, %{buildroot}, $RPM_BUILD_DIR, может есть $RPM_RPMS_DIR и тогда можно пакеты положить в один из каталогов, а имя пакета %{name} использовать как объект для копирования и в именах путей секции %file.