Модуль 6: Продвинутые техники
Патчи, подпакеты, скриптлеты, условные сборки и архитектурные нюансы.
Вы освоили базовую упаковку. Теперь разберём продвинутые техники, которые нужны для сложных пакетов.
Цели модуля
После изучения этого модуля вы будете:
- Создавать и применять патчи для исправления проблем
- Разбивать пакет на подпакеты (-devel, -doc, -libs)
- Использовать скриптлеты для действий при установке/удалении
- Применять условные сборки для разных конфигураций
- Правильно работать с версионированием и Epoch
Содержание модуля
-
Патчи: создание, применение, backport
Когда и как использовать патчи, создание из git, форматы. -
Подпакеты: -devel, -doc, -libs
Разделение пакета на логические части. -
Скриптлеты и триггеры
%pre, %post, %preun, %postun — действия при установке и удалении. -
Условные сборки и bcond
Опции сборки, условная компиляция, архитектурные особенности. -
Версионирование и Epoch
Правила версионирования, когда использовать Epoch, снапшоты.
Когда это нужно
| Ситуация | Техника |
|---|---|
| Баг не исправлен в upstream | Патчи |
| Библиотека с заголовками | Подпакет -devel |
| Нужно создать пользователя | Скриптлеты |
| Опциональная функция | Условная сборка |
| Upstream сменил версионирование | Epoch |
Следующий модуль
После освоения продвинутых техник переходите к Модулю 7: Качество и релиз — проверка пакета и публикация.
Патчи: создание, применение, backport
Когда нужны патчи, как их создавать и поддерживать в SPEC-файле.
Подпакеты: -devel, -doc, -libs
Разделение пакета на логические части и правила для -devel.
Скриптлеты и триггеры
%pre/%post/%preun/%postun и триггеры для корректной установки.
Условные сборки и bcond
Опции сборки, архитектурные условия и флаги %bcond.
Версионирование и Epoch
Как rpm сравнивает версии и когда нужен Epoch.