[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: apt-get / aptitude [g]libc update not to prompt for restart and not restart



Mihamina RAKOTOMANDIMBY wrote:
> Yes, but how to default the upgrade process to ("dont restart" && "dont even
> ask")?
> I *will* restart the services, but I will do it manually, in order to check
> for functional regression.
> Prior to the manual restart of services, I need to *blindly* upgrade glibc
> without running the restart.

Your best strategy is to restart those services manually first.  Then
if any of them have problems debug those problems.  Make sure that
your services restart correctly.  Then upgrade libc.  The libc upgrade
will restart those again but since you just verified that they all
restart correctly there won't be any problem with them.  In a
correctly functioning system those will be restartable at any time
without problems.

When libc is initially upgraded for the first time it will ask you if
you want to restart services.  You can answer yes or no at that time.
But once that option has been set I don't know of a way to change it.
As far as I know there isn't an option to prevent libc from restarting
services later.

The dialog answer is saved into /var/cache/debconf/config.dat where it
looks something like this sample from my machine.

  Name: glibc/restart-services
  Template: glibc/restart-services
  Value: ssh samba postfix openbsd-inetd mysql incron cups cron atd
  Owners: libc6, libc6:amd64
  Flags: seen

I don't have a good test case at the moment so I don't know what needs
to be done to trigger the reconfigure so that you could unselect
everything.  I assume that removing that section would be sufficient
but did not test it.

Meanwhile the actual script that does the work is the libc6:amd64
postinst script at /var/lib/dpkg/info/libc6:amd64.postinst and I
recommend inspecting it.  Basically it goes through a list of named
services to check, running 'invoke-rc.d $service status' to see if it
can restart it.  If so then it later restarts the service.  It looks
to be possible to use that knowledge to avoid the restart by using the
invoke-rc.d mechanisms such as policy-rc.d to avoid the restart.  I
think, not sure and didn't test, but I think that setting up a
/usr/sbin/policy-rc.d with "#!/bin/sh" and "exit 101" as the only line
would cause all restarts to be avoided.

However while going to extended effort to avoid the restart it is
possible that a simple mistake could make a big mess of it.  If you
decide to go that way test thoroughly with a victim system.

I strongly recommend doing the first thing I suggested, if you are
worried about it, which is to restart your critical services first and
verify that you have a correctly functioning system.  Then simply
upgrade libc normally letting it restart what it wants.  Doing unusual
things to avoid it is more likely to cause a problem due to the fact
that it is easy to make mistakes when doing unique one-off things.

Bob

Attachment: signature.asc
Description: Digital signature


Reply to: