Product SiteDocumentation Site

6.8. 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.8.1. Configuration de dpkg

Nous avons déjà vu (encadré POUR ALLER PLUS LOIN Éviter les questions sur les fichiers de configuration) comment interdire à dpkg de demander confirmation du remplacement d'un fichier de configuration (avec les options --force-confdef --force-confold). Il reste trois éléments à prendre en compte : les interactions générées par APT lui-même, celles provenant de debconf et les interactions en ligne de commande intégrées dans les scripts de configuration des paquets.

6.8.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.8.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).
Parmi la liste des interfaces possibles, noninteractive (non interactive) est très particulière : la choisir désactive toute interaction avec l'utilisateur. Si un paquet désire malgré tout lui communiquer une note d'information, celle-ci sera automatiquement transformée en courrier électronique.
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.8.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. Cette méthode n'est pas fiable à 100 % mais elle permet 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.8.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.4. 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