Обсуждение: Upgrade packages - Control Instance

Поиск
Список
Период
Сортировка

Upgrade packages - Control Instance

От
Sébastien Lardière
Дата:
Hi,

I'm looking for a way to control the way instances are restarted when
`apt upgrade` run => sometime, if there is a large number of packages to
upgrade, the instances is stopped for a long time.

In the past, I used to use start.conf with manual setting, then restart
"manually" after the upgrade, which give downtime as short as I can ;
but now, it seems that "stop" is always done, even when i disable the
systemd service (ok,it is weird to disable service and to want the
service up, I know ) => I think that the fact we can't forbid the stop
is not correct.

I know that I can hold the postgresql packages, run the big `apt
upgrade` then unhold packages and do the postgresql upgrade, but I think
it's a more complicated way to do it.

Am I miss something ?

Am I the only one disturbed by the fact that we can't forbid stop ?

regards,

-- 

Sébastien




Re: Upgrade packages - Control Instance

От
Christoph Berg
Дата:
Re: Sébastien Lardière 2019-05-21 <f4efadb7-ecb0-ba1f-383b-b9a38f988f87@lardiere.net>
> Hi,
> 
> I'm looking for a way to control the way instances are restarted when
> `apt upgrade` run => sometime, if there is a large number of packages to
> upgrade, the instances is stopped for a long time.
> 
> In the past, I used to use start.conf with manual setting, then restart
> "manually" after the upgrade, which give downtime as short as I can ;
> but now, it seems that "stop" is always done, even when i disable the
> systemd service (ok,it is weird to disable service and to want the
> service up, I know ) => I think that the fact we can't forbid the stop
> is not correct.
> 
> I know that I can hold the postgresql packages, run the big `apt
> upgrade` then unhold packages and do the postgresql upgrade, but I think
> it's a more complicated way to do it.
> 
> Am I miss something ?
> 
> Am I the only one disturbed by the fact that we can't forbid stop ?

The generic solution is policy-rc.d:

https://people.debian.org/~hmh/invokerc.d-policyrc.d-specification.txt

Simple sample implementation:

#!/bin/sh

# policy-rc.d script for chroots.
# Copyright (c) 2007 Peter Palfrader <peter@palfrader.org>

test -f /etc/debian_chroot || exit 0

while true; do
  case "$1" in
    -*)         shift ;;
    makedev)    exit 0;;
    *)
      echo "Not running services in chroot."
      exit 101
      ;;
  esac
done


Christoph



Re: Upgrade packages - Control Instance

От
Sébastien Lardière
Дата:
On 21/05/2019 12:09, Christoph Berg wrote:
> Re: Sébastien Lardière 2019-05-21 <f4efadb7-ecb0-ba1f-383b-b9a38f988f87@lardiere.net>
>> Hi,
>>
>> I'm looking for a way to control the way instances are restarted when
>> `apt upgrade` run => sometime, if there is a large number of packages to
>> upgrade, the instances is stopped for a long time.
>>
>> In the past, I used to use start.conf with manual setting, then restart
>> "manually" after the upgrade, which give downtime as short as I can ;
>> but now, it seems that "stop" is always done, even when i disable the
>> systemd service (ok,it is weird to disable service and to want the
>> service up, I know ) => I think that the fact we can't forbid the stop
>> is not correct.
>>
>> I know that I can hold the postgresql packages, run the big `apt
>> upgrade` then unhold packages and do the postgresql upgrade, but I think
>> it's a more complicated way to do it.
>>
>> Am I miss something ?
>>
>> Am I the only one disturbed by the fact that we can't forbid stop ?
> The generic solution is policy-rc.d:
>
> https://people.debian.org/~hmh/invokerc.d-policyrc.d-specification.txt
>
> Simple sample implementation:
>
> #!/bin/sh
>
> # policy-rc.d script for chroots.
> # Copyright (c) 2007 Peter Palfrader <peter@palfrader.org>
>
> test -f /etc/debian_chroot || exit 0
>
> while true; do
>   case "$1" in
>     -*)         shift ;;
>     makedev)    exit 0;;
>     *)
>       echo "Not running services in chroot."
>       exit 101
>       ;;
>   esac
> done
>

Indeed, it works, I just added :

      postgresql*)
          echo "Do not manage PostgreSQL service"
          exit 101
          ;;

to manage postgresql specifically. The path is /usr/sbin/policy-rc.d ;
then chmod a+x

thanks,

--

Sébastien