Консультации и оказание технической поддержки по данной статье не предоставляются.
Вы можете подробнее ознакомиться с принципами сборки пакетов для РЕД ОС, просмотрев наши обучающие видео:
на RuTube — Курс по принципам сборки пакетов для РЕД ОС;
в Яндекс.Дзен — Курс по принципам сборки пакетов для РЕД ОС;
в VK Видео — Курс по принципам сборки пакетов для РЕД ОС.
На наших каналах вы также сможете найти много другой полезной информации.
В спецификации RPM существует ряд директив, которые можно использовать для внесения необходимых или желаемых изменений в систему во время установки или удаления пакета. Такие директивы называются скриптлетами.
Некоторыми из основных примеров того, когда это может понадобиться, являются:
установка пакетом системной службы, которая предоставляет файл модуля systemd, после чего нужно будет уведомить systemd о появлении нового модуля, возможно и запустить его. Обратная ситуация: при удалении пакета, содержащего модуль systemd, необходимо остановить выполнение сервиса и проинформировать systemd об удалении модуля;
установка или удаление библиотек с последующей перестройкой их кэша;
установка или удаление элементов графического интерфейса или схем GLib, после чего необходимо перестраивать кэши или перекомпилировать схемы;
создание или удаление системных пользователей и/или групп при установке или удалении пакетов.
Количество стандартных (встроенных) скриптлетов весьма невелико, все они похожи на блоки тела спецификации, такие как %build или %install, в том, что определяются многострочными сегментами кода, представляющим собой стандартный сценарий оболочки (но могут быть использованы и некоторые скриптовые языки, например, Lua).
В своём роде, скриптлеты являют собой дополнительные блоки в теле спецификации, предоставляющие расширенные возможности при работе уже с двоичными пакетами.
Далее приведены встроенные скриптлеты сборочной системы в РЕД ОС.
Скриптлеты поддерживают специальный флаг -p, который позволяет напрямую вызывать одну указанную программу, а не создавать сеанс оболочки для вызова программ (например, %post -p /sbin/ldconfig):
%pretrans - выполняется до начала любых операций по установке пакета;
%pre - выполняется непосредственно перед установкой файлов из пакета;
%preun - выполняется непосредственно перед удалением пакета;
%postun - выполняется после завершения удаления файлов пакета;
При вызове скриптлетов им всегда передаётся аргумент, доступ к которому осуществляется через переменную $1 (для сценариев оболочки).
Скриптлет
Установка
(install)
Обновление
(upgrade)
Удаление
(uninstall)
%pretrans
$1 == 1
$1 == 2
(N/A)
%pre
%post
%preun
$1 == 0
%postun
%posttrans
Таким образом, анализируя аргумент внутри скриптлета, можно точно идентифицировать действие, которое выполняется в системе, а также определить, имеются ли в системе пакеты с таким же именем, что бывает необходимо знать при обновлении с целью сохранения имеющихся настроек, а не их перезаписью.
Дата последнего изменения: 06.05.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.