We use the following postun scriptlet:
1
2
3
4
5
6
7
if [ $1 -ge 1 ]; then
if [ -x %{_sysconfdir}/init.d/mysql ] ; then
# only restart the server if it was alredy running
%{_sysconfdir}/init.d/mysql status > /dev/null 2>&1 && \
%{_sysconfdir}/init.d/mysql restart
fi
fi
The problem is that A && B
construct, while it only runs B
if A
succeeds, it also sets the exit code to that of A
, if A
fails.
That is, if mysql status
fails, the scriptlet exists with a non-zero code, and rpm treats it as a failure.
Possible fix: use if A; then B; fi
instead of A && B
.