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. 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.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