Bug#573247: service restart code seems busted; restart question displayed during d-i run
Package: libc6
Version: 2.10.2-6
Severity: normal
Tags: d-i
Symptom A:
libc6 will often be upgraded in the latter half of a d-i installation,
when an old version is installed from CD or a mirror, and a newer
version is available on a mirror, or on security.debian.org. During this
upgrade, the glibc/restart-services question is displayed right in the
middle of the installer. You can see this right now if you install
testing using the d-i alpha from a netinst CD.
Of course, cron and at are not running, and in fact the installer
has a /usr/sbin/policy-rc.d in place that exits 101, which will
prevent anything from being started. So the prompt has no point, and
it is a confusing thing for users to see at that point.
Symptom B:
Stop cron. Now upgrade libc6 from a sufficiently old version,
and it will prompt and then restart cron.
Both problems seem to have the same root. The postinst checks if a service
should be restarted by using invoke-rc.d. For some reason, a exit code
of 1 is taken to mean that a service is running, resulting in the
unnecessary prompt.
invoke-rc.d ${service} status 2>/dev/null || status=$?
if [ "$status" = "0" ] || [ "$status" = "1" ] ; then
services="$service $services"
elif [ "$status" = "100" ] ; then
echo "WARNING: init script for $service not found."
fi
I also have grave doubts about that || status=$?
It only sets $status if invoke-rc.d exits nonzero. Otherwise, $status will be
"", or a value leftover from the previous service in the loop.
--
see shy jo
Reply to: