Я пытаюсь создать пакет rpm. В файле спецификации есть следующие макросы:
%postun
systemctl stop metrics_haproxy.service
systemctl stop checker_haproxy.service
systemctl stop keep_alive.service
systemctl disable metrics_haproxy.service
systemctl disable checker_haproxy.service
systemctl disable keep_alive.service
rm -f /etc/httpd/conf.d/haproxy-wi.conf
rm -f /etc/rsyslog.d/metric.conf
rm -f /etc/rsyslog.d/checker.conf
rm -f /etc/rsyslog.d/keep_alive.conf
rm -f /etc/logrotate.d/metric
rm -f /etc/logrotate.d/checker
rm -f /etc/logrotate.d/keep_alive
systemctl restart rsyslog
systemctl daemon-reload
%post
systemctl daemon-reload
systemctl restart rsyslog
systemctl restart metrics_haproxy.service
systemctl restart checker_haproxy.service
systemctl restart keep_alive.service
systemctl restart httpd
systemctl enable metrics_haproxy.service
systemctl enable checker_haproxy.service
systemctl enable keep_alive.service
systemctl enable httpd
но сталкиваюсь с одной проблемой: когда я обновляюсь с новой версией rpm, yum сначала создает все службы, а затем удаляет. И я остаюсь без запущенных и включенных сервисов после обновления
Есть какой-то workaorund?
Вы должны прочитать эта страница чтобы понять порядок выполнения сценария при установке rpm. Самое главное:
так что %postun
скрипт вашего старого пакета запускается после в %post
скрипт вашего нового пакета. Вероятно, вы захотите:
%postun
if [ $1 = 0 ]
then
# the package is really being uninstalled, not upgraded
fi
НО поскольку ваш старый пакет уже установлен, %postun
скрипт вашего старого пакета все равно будет работать. Чтобы исправить это, я думаю, что самое простое решение - изменить %post
в %posttrans
так что он будет работать после в %postun
сценарий.