Согласно документации RPM,%пред,%почта,%преуни%постунСкриптлеты должны возвращать 0 для продолжения (де)установки.
(1)Но каков эффект, если один из этих скриптлетов возвращает ненулевое значение?
(2)Будет ли отменена выполненная до сих пор операция, оставив систему в том состоянии, в котором она была до вызова (де)установки RPM?
(3)Задействован ли механизм транзакции?
Я просмотрел документацию (много страниц, включая официальную документацию Fedora), но не нашел никаких подсказок (по крайней мере, ничего «черно-белого», насколько я понимаю).
решение1
Информация, которую я нашел, взята из Ошибка RedHat 216221 от ноября 2006 года. Я не знаю, актуален ли еще следующий текст.
Последняя запись поста гласит:
- %pre и %preun скриптлеты, завершающиеся с ненулевым кодом, приводят к сбою установки/удаления, как и раньше. Это поведение необходимо сохранить, так как различные пакеты используют его для предотвращения установки/удаления при некоторых условиях.
- Ненулевой код выхода из других скриптлетов рассматривается только как предупреждение (т.е. при сбое %postun будет выведено предупреждение, но пакет все равно будет удален)
- скриптлеты, умирающие по сигналам и другим «ненормальным» причинам, по-прежнему рассматриваются как ошибки
- для всех ошибок скриптлета отправляется уведомление RPMCALLBACK_SCRIPT_ERROR в функцию обратного вызова с тегом неудачного скрипта, переданным в параметре «amount» и параметре «total», содержащем RPMRC_OK / RPMRC_FAIL, чтобы сообщить, обработал ли rpm это как предупреждение или ошибку
решение2
У меня есть только частичные ответы, но я надеюсь, что они помогут вам в пути...
- установка будет рассмотренанеуспешный, но насколько мне известно, реального влияния это не оказывает: файлы по-прежнему будут присутствовать в вашей системе и т. д.
%preun
Однако у меня возникли проблемы с удалением пакета, когда скриптлет не сработал. - Никакие операции не отменяются..
rpm
не может волшебным образом узнать, как отменить команды, которые вы помещаете в свои скриптлеты. - Я не знаю, задействован ли механизм транзакций. Вы можете провести несколько тестов для этого: установить хороший rpm и один с неисправным
%post
скриптом...