web-dev-qa-db-fra.com

Comment redémarrer manuellement les services affectés par les mises à niveau apt?

Comment puis-je émettre des mises à niveau apt sans arrêter/démarrer automatiquement les démons? J'aimerais redémarrer manuellement les services.

Pour citer un exemple spécifique:

Je vais revenir sur une machine qui tourne depuis longtemps et lancer Sudo apt-get update && time Sudo apt-get dist-upgrade. Il s'agit d'un moyen très simple de voir toutes les mises à niveau disponibles, suivies d'une simple pression sur la touche Entrée pour que les systèmes soient entièrement corrigés.

Si je vois postgresql-9.1 dans la liste de mise à niveau, j'annule la mise à niveau. Dans ce cas, apt arrêterait le service tôt dans le processus, appliquerait plusieurs opérations non critiques, puis redémarrerait le service beaucoup plus tard. Une mise à niveau de routine peut entraîner des minutes d'indisponibilité.

J'aimerais dire "oui" à la mise à niveau pour que tous les correctifs soient appliqués, puis redémarrer manuellement le service à un moment opportun.

6
rduplain

Vous pouvez empêcher les redémarrages de service avec la couche de stratégie Debian, qui fonctionne également sur Ubuntu.

Exemple: Créez un fichier nommé /usr/sbin/policy-rc.d avec le contenu suivant (n'oubliez pas de rendre le fichier exécutable):

#!/bin/sh

exit 101

Aucun service¹ ne serait automatiquement démarré/arrêté/redémarré. Voir /usr/share/doc/sysv-rc/README.policy-rc.d.gz pour plus de détails et comment l’ajuster pour ignorer un seul service.

1. tant que les scripts d'installation suivent les instructions de Debian et utilisent invoke-rc.d pour les redémarrages de service

10
tlo

J'aimerais dire "oui" à la mise à niveau pour que tous les correctifs soient appliqués, puis redémarrer manuellement le service à un moment opportun.

Vous ne pouvez pas faire cela dans le cas général, désolé. Même si un service n'est pas redémarré, les packages ne permettent pas de garantir que les mises à niveau sans redémarrage du service ne casseront rien (par exemple, tout ce qui est chargé dynamiquement, comme les modules).

Si vous voulez un système stable, vous devez soit empêcher la mise à jour d'un paquet, soit le mettre à jour complètement, avec un redémarrage du service.

Je ne peux pas vraiment indiquer une source crédible ici, car je ne peux pas prouver un négatif. politique Debian est pertinent ici; il ne fournit tout simplement pas la garantie que vous recherchez. Selon la politique de Debian, la fonctionnalité d’un paquet n’est pas obligée de fonctionner tant que le postinst n’est pas terminé avec succès. Nous pouvons donc en déduire que si le postinst inclut un redémarrage de service obligatoire, cela doit se produire.

Quelques autres mécanismes qui pourraient vous aider:

  1. Utilisez apt-get --download-only upgrade pour télécharger les mises à jour à l'avance.
  2. Maintient des paquets spécifiques retour des mises à jour.
  3. Recherchez la "haute disponibilité", afin que les serveurs puissent être mis à niveau à leur tour, sans interruption du service. Avec Postgres, cela impliquerait probablement une sorte de configuration répliquée.
2
Robie Basak

Il existe un outil basé sur la CLI nommé sysv-rc-conf Install sysv-rc-conf . Vous pouvez également le faire installer en exécutant la commande suivante dans le terminal:

Sudo apt-get install sysv-rc-conf

Ensuite, vous pouvez l'activer/l'ouvrir en lançant:

Sudo sysv-rc-conf

Capture d'écran:

enter image description here

1
rɑːdʒɑ