1

Я создаю RPM-пакет (назовем его пакетом A). Мне нужно реагировать, если другой пакет (пакет B) переустанавливается или обновляется. Итак, я создал триггер внутри пакета B:

%triggerin -- B
#myscript

К сожалению, триггер активируется даже когда я устанавливаю или обновляю пакет A, а пакет B уже находится в системе. Мне нужно выполнить триггерный код, только если пакет A установлен, а пакет B переустановлен или обновлен. Как я могу различить эти два типа активации?

2 ответа2

3

% triggerin выполняется после установки RPM, если цель уже установлена, и после установки цели, когда установлен RPM

% triggerun выполняется перед удалением RPM, если цель установлена, и перед удалением цели, пока установлен RPM

% triggerpostun выполняется после удаления цели, когда установлен RPM, но не запускается, если RPM удален

Тем не менее, вы можете использовать% triggerin с условным условием, чтобы избежать выполнения кода при установке A. Этого можно добиться, назначив значение переменной в разделе% pre.

что-то вроде этого:

% define install_ed%(rpm -qa | grep A)

% triggerin

if [$ install_ed ne "A"]; затем ...

Я не на машине, основанной на оборотах в минуту, поэтому я не могу проверить решение, но оно должно работать

0

Можете ли вы попробовать проверить %{installtime:date} в вашем триггере. Делайте только если это достаточно недавно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .