6.9. Mise à jour automatique
Dans le contexte de Falcot SA, qui inclut de nombreuses machines et des ressources humaines limitées, les administrateurs souhaitent automatiser au maximum les mises à jour. Les programmes chargés de ces opérations doivent donc fonctionner sans intervention humaine.
6.9.1. Configuration de dpkg
As we have already mentioned (see sidebar
POUR ALLER PLUS LOIN Éviter les questions sur les fichiers de configuration),
dpkg
can be instructed not to ask for confirmation when replacing a configuration file (with the
--force-confdef --force-confold
options). Interactions can, however, have three other sources: some come from APT itself, some are handled by
debconf
, and some happen on the command line due to package configuration scripts (sometimes handled by
ucf).
6.9.2. Configuration d'APT
En ce qui concerne APT, la réponse est simple. Il suffit de lui préciser l'option -y
ou --assume-yes
, qui répondra « oui » automatiquement à toutes les questions qu'il aurait pu poser.
6.9.3. Configuration de debconf
Pour debconf
, la réponse mérite un plus long développement. Dès sa naissance, ce programme fut prévu pour permettre de vérifier la pertinence et le volume des questions posées à l'utilisateur, ainsi que la manière dont elles le seront. C'est pourquoi sa configuration demande la priorité minimale à partir de laquelle debconf
posera une question. Quand il s'interdit d'interroger l'humain, ce programme utilise automatiquement la valeur par défaut définie par le mainteneur du paquet. Il faut encore choisir une interface pour l'affichage des questions (frontal, ou front-end en anglais).
The other relevant configuration element is the interface used by the frontend. If you choose noninteractive
out of the choices, all user interaction is disabled. If a package tries to display an informative note, it will be sent to the administrator by email.
Pour reconfigurer debconf
, on utilise l'outil dpkg-reconfigure
inclus dans le paquet debconf
; la commande est dpkg-reconfigure debconf
. Il est aussi possible de changer temporairement les choix de configuration effectués à l'aide de variables d'environnement (DEBIAN_FRONTEND
permet ainsi de changer d'interface, comme expliqué dans la page de manuel debconf(7)).
6.9.4. Gestion des interactions en ligne de commande
Finalement, les interactions en ligne de commande des scripts de configuration exécutés par dpkg
sont les plus difficiles à éliminer. Il n'existe en effet aucune solution standard et aucune réponse n'est meilleure qu'une autre.
La solution généralement employée est de supprimer l'entrée standard (en y redirigeant le contenu de /dev/null
, par exemple avec la syntaxe commande </dev/null
), ou d'y brancher un flux continu de retours à la ligne. Aucune de ces méthodes n'est fiable à 100 % mais elles permettent en général d'accepter les choix par défaut, puisque la plupart des scripts interprètent l'absence de réponse explicite comme une validation de la valeur proposée par défaut.
6.9.5. La combinaison miracle
Si l'on met bout à bout les éléments de configuration exposés dans les sections précédentes, il est possible de rédiger un petit script capable d'effectuer une mise à jour automatique assez fiable.
Exemple 6.5. Script pour mise à jour non interactive
export DEBIAN_FRONTEND=noninteractive
yes '' | apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" dist-upgrade