Могу ли я сказать, какие пакеты будут установлены дальше?

У меня есть 3 пакета, которые мы собираем spec файлы для установки наших приложений с:

Package A
Package B
Package C

A depends on B
A depends on c

Проблема в том, что каждый из этих пакетов устанавливает вещи, которые требуют завершения работы сервера приложений перед установкой, и перезапускают после установки.

Что хорошо, если устанавливаются только B или C.

Проблемы при установке A и появлении новых версий B и / или C, я получаю 3 последовательных перезапуска моего сервера приложений, и каждый перезапуск занимает около 10 минут.

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

1 ответ

Решение

Я не знаю, есть ли нативный способ сделать это, но то, что я делал в прошлом, это проверял все пакеты %pre если целевой сервис работает (например, httpd). Если это так, выключите его и используйте at чтобы он перезапустился через разумный промежуток времени в будущем (например, две минуты). Каждый RPM также проверяет, находится ли перезапуск уже в очереди (я использовал случайную очередь, например, "n" или что-то в этом роде), и, если это так, он отбрасывает ее еще на две минуты. Конечный результат должен состоять в том, что сервер запускается только один раз, через две минуты после установки окончательного пакета.

Недостаток: хотя at находится в LSB, по некоторым причинам на некоторых машинах его не было установлено, поэтому мне пришлось добавить его в свой Requires тег.

Другие вопросы по тегам