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