NOM
debconf - système de configuration des paquets Debian
Debconf est un système de configuration pour les paquets Debian. Il
existe une commande rarement utilisée nommée debconf, documentée dans
debconf(1)
Debconf fournit une interface cohérente pour la configuration des
paquets et donne à l’utilisateur le choix entre plusieurs interfaces.
Il peut configurer des paquets avant qu’ils ne soient installés, ce qui
permet à des installations et des mises à niveau importantes de
demander toutes les informations nécessaires au préalable, et de vous
laisser faire ce que vous voulez pendant que les paquets s’installent.
Debconf vous permet, si vous êtes pressé, de sauter les questions les
moins importantes au moment de l’installation d’un paquet (en y
revenant plus tard).
Préconfiguration des paquets
Debconf peut configurer les paquets avant même qu’ils ne soient
installés sur votre système. Ainsi, toutes les questions des paquets
vous seront posées au début de l’installation ce qui permettra à
l’installation de continuer pendant que vous êtes en train de prendre
un café.
Si vous utilisez apt (version 0.5 ou supérieure) et que vous avez
installé apt-utils, chaque paquet installé par apt sera automatiquement
préconfiguré. Ceci est contrôlé via /etc/apt/apt.conf.d/70debconf
Quelquefois vous voudrez préconfigurer un paquet vous-même, quand vous
l’installez sans apt. Vous pouvez utiliser dpkg-preconfigure(8) pour ce
faire. Donnez-lui seulement le nom du paquet que vous voulez
préconfigurer. Vous aurez besoin d’installer apt-utils pour que cela
fonctionne.
Reconfiguration des paquets
Supposons que vous ayez installé un paquet et que vous ayez répondu aux
questions de debconf, mais maintenant que vous l’utilisez de temps en
temps, vous réalisiez que vous voulez revenir sur quelques-unes de vos
réponses et les changer. Autrefois, il fallait faire une réinstallation
quand vous étiez dans cette situation ; mais quand vous réinstallez le
paquet, debconf semble se souvenir que vous avez déjà répondu aux
questions et ne vous les pose pas à nouveau (c’est voulu).
Heureusement, debconf facilite la reconfiguration des paquets qui
l’utilisent. Supposez que vous voulez reconfigurer debconf lui-même.
Exécutez simplement, en tant que superutilisateur :
dpkg-reconfigure debconf
Il vous posera toutes les questions que vous avez vues lors de la
première installation de debconf. Il peut aussi vous poser d’autres
questions, puisqu’il vous pose même les questions de priorité basse qui
ont pu être sautées quand le paquet a été installé. Vous pouvez aussi
bien l’utiliser avec n’importe quel autre paquet utilisant debconf.
Interfaces
Une fonctionnalité remarquable de debconf est qu’il possède plusieurs
interfaces et l’on peut en changer à loisir. Voici les interfaces
disponibles :
dialog Interface par défaut : elle utilise les programmes whiptail(1)
ou dialog(1) pour afficher les questions. Elle fonctionne en
mode texte.
readline
C’est l’interface la plus traditionnelle. Elle ressemble à la
configuration Debian classique : une série de questions,
imprimées sur la console en mode texte et des invites affichées
avec la bibliothèque readline. Elle reconnaît même le
complètement avec « tab ». Le paquet libterm-readline-gnu-perl
est fortement recommandé si vous choisissez d’utiliser cette
interface ; le module readline par défaut ne gère pas les
invites de saisie avec des valeurs par défaut. Pour utiliser
cette interface, vous aurez besoin d’installer le paquet
perl-modules.
Cette interface a quelques commandes spéciales. « Page préc. »
(ou ctrl-u) reviendra à la question précédente (si cela est géré
par le paquet utilisant debconf) et « Page suiv. » (ou ctrl-v)
passera à la question suivante.
C’est la meilleure interface pour les administrateurs à distance
travaillant par une connexion lente, ou pour ceux qui sont à
l’aise avec Unix.
noninteractive
C’est l’anti-interface. Elle n’interagit jamais avec vous et
utilise les réponses par défaut pour toutes les questions. Elle
enverra parfois un courriel à root avec les messages que le
paquet voulait afficher, mais c’est tout ! À part ça, elle est
silencieuse et discrète, c’est une interface parfaite pour des
installations automatiques. Si vous utilisez cette interface et
si vous voulez que les réponses aux questions ne soient pas
celles par défaut, vous aurez besoin de renseigner d’abord la
base de données de debconf ; pour plus de détails, consultez la
section ci-dessous sur l’installation de paquets sans
surveillance.
gnome C’est une interface homme-machine X moderne utilisant les
bibliothèques gtk et gnome. Bien sûr, elle nécessite une
variable DISPLAY valable pour fonctionner ; si elle ne peut pas
fonctionner, debconf se rabattra sur d’autres interfaces.
Remarquez que cette interface nécessite que vous ayez installé
le paquet libgnome2-perl.
editor C’est pour ces fanatiques qui veulent tout faire à l’aide d’un
éditeur de texte. Elle lance votre éditeur sur un fichier qui
ressemble à un fichier de configuration Unix, et vous modifiez
le fichier qui sert à communiquer avec debconf. L’auteur de
debconf préfère ne pas commenter les circonstances qui ont
conduit à l’écriture de cette interface.
web
Cette interface agit comme un serveur web auquel vous vous
connectez avec votre navigateur web, pour parcourir les
questions et y répondre. Elle est très prometteuse, mais un peu
rugueuse pour l’instant. Quand cette interface se met en route,
elle indiquera le lieu où vous devrez pointer votre navigateur
web. Pour des raisons de sécurité, vous devez exécuter votre
navigateur web sur la machine que vous configurez.
Gardez à l’esprit que ce n’est pas une interface sécurisée. Tous
ceux qui ont accès à l’ordinateur en cours de configuration
peuvent aussi accéder au serveur web et configurer certaines
choses alors que cette interface tourne. C’est plus une preuve
de concept qu’autre chose.
Vous pouvez changer l’interface par défaut qu’utilise debconf en le
reconfigurant. D’un autre côté, si vous voulez juste changer
l’interface pour un instant, vous pouvez positionner la variable
d’environnement DEBIAN_FRONTEND avec le nom de l’interface à utiliser.
Par exemple :
DEBIAN_FRONTEND=readline apt-get install slrn
Les commandes dpkg-reconfigure(8) et dpkg-preconfigure(8) permettent
aussi de leur passer --frontend= en paramètre, suivi de l’interface que
vous voulez qu’elles utilisent.
Notez que toutes les interfaces ne fonctionneront pas en toute
circonstance. Si le démarrage d’une interface échoue pour quelque
raison que ce soit, debconf affichera un message expliquant pourquoi et
se rabattra sur l’interface la plus proche.
Priorités
Pouvoir donner des priorités aux questions que vous pose debconf est
une fonctionnalité agréable. Si vous ne voulez pas être ennuyé par les
questions sans importance, vous pouvez configurer debconf pour qu’il ne
vous pose que les questions les plus importantes. D’un autre côté, si
vous aimez tout contrôler, vous pouvez lui faire afficher toutes les
questions. Chaque question a une priorité. Par ordre croissant
d’importance :
low Questions peu importantes dont les valeurs par défaut suffisent
dans la majorité des cas.
medium Questions normales avec des valeurs par défaut raisonnables.
high Questions qui n’ont pas de valeurs par défaut convenables.
critical
Questions que vous avez vraiment besoin de voir (ou autre).
Seules les questions avec une priorité supérieure ou égale à la
priorité que vous avez choisie seront affichées. Vous pouvez fixer la
valeur de la priorité en reconfigurant debconf, ou temporairement en
passant l’option --priority= suivie de la valeur voulue aux commandes
dpkg-reconfigure(8) et dpkg-preconfigure(8), ou en positionnant la
variable d’environnement DEBIAN_PRIORITY.
Base de données principale
Debconf utilise une base de données sous-jacente plutôt flexible et
potentiellement compliquée pour sauvegarder les réponses déjà données
aux questions. Le fichier /etc/debconf.conf est utilisé pour configurer
cette base de données. Si vous avez besoin de configurer quelque chose
de compliqué, comme utiliser une base de données distante pour obtenir
les valeurs par défaut, annulées par des variables locales, lisez la
page de manuel debconf.conf(5) pour tous les détails croustillants. La
base de données principale se trouve généralement dans
/var/cache/debconf/.
Installation des paquets sans surveillance
Si vous avez beaucoup de machines à gérer, vous aurez sûrement besoin
de faire une installation ou une mise à niveau sans surveillance, alors
que les réponses par défaut à certaines questions de configuration ne
sont pas acceptables. Il y a beaucoup de manières pour faire cela ;
toutes impliquent la configuration d’une base de données que debconf
utilisera pour obtenir les réponses par défaut que vous voulez.
Avant de lire cette section, vous devriez vraiment lire debconf.conf(5)
car vous avez besoin de comprendre le fonctionnement de la base de
données de debconf.
Le plus simple pour configurer la base de données est d’installer les
paquets sur une machine et de répondre aux questions. Vous pouvez aussi
utiliser dpkg-preconfigure(8) pour configurer un ensemble de paquets
sans réellement les installer. Vous pouvez même décider d’écrire une
base de données debconf à la main, comme un simple texte...
Une fois que vous avez la base de données, vous devez trouver comment
faire pour que les systèmes distants l’utilisent. Cela dépend bien sûr
de la configuration de ces systèmes et de la base de données qu’ils
doivent utiliser.
Si vous utilisez la base de données LDAP de debconf, un seul serveur
LDAP peut répondre à toutes les questions d’installation des paquets
d’un réseau complet de machines Debian.
Mais peut-être utilisez-vous quelque chose d’un peu plus facile à
configurer, comme par exemple, la base de données de configuration de
debconf par défaut, ou ne voulez-vous tout simplement pas que vos
systèmes distants utilisent LDAP continuellement. Dans ce cas, la
meilleure approche est de configurer temporairement les systèmes
distants pour qu’ils ajoutent votre base de données sous leurs propres
bases, de manière à ce qu’ils obtiennent les valeurs par défaut de
celle-ci. Debconf offre deux variables d’environnement,
DEBCONF_DB_FALLBACK et DEBCONF_DB_OVERRIDE, pour le faire à la volée et
simplement. Ici, un exemple d’utilisation :
cat /var/cache/debconf/config.dat | \
ssh root@cible "DEBIAN_FRONTEND=noninteractive \
DEBCONF_DB_FALLBACK=Pipe apt-get upgrade"
Cela fait que debconf sur l’hôte distant lit les données passées dans
le tube à travers la connexion SSH et les interprète comme une base de
données debconf en mode texte. Il n’utilise cette base de données qu’en
dernier lieu -- c’est une base de données en lecture seule, où l’on
cherche les réponses que la base principale du système ne peut fournir.
Une autre manière d’utiliser la variable d’environnement
DEBCONF_DB_FALLBACK :
ssh -R 389:ldap:389 root@cible \
"DEBCONF_DB_FALLBACK=’LDAP{host:localhost}’ apt-get upgrade"
ssh est utilisé ici pour configurer une connexion LDAP dans un tunnel
et lancer debconf. On indique à debconf d’utiliser le serveur LDAP
comme base de données de secours. Remarquez l’utilisation de
« {host:localhost} » pour configurer l’accès de debconf à la base de
données LDAP fournissant le champ « host » avec la valeur
« localhost ».
Encore une autre méthode :
scp config.dat root@cible:
ssh root@cible "DEBCONF_DB_FALLBACK=’File{/root/config.dat}’ apt-get
upgrade
Ici, vous copiez la base de données avec scp, puis ssh, et vous faites
utiliser à debconf la base de données que vous avez copiée. Cela
illustre un raccourci que vous pouvez utiliser dans les paramètres de
DEBCONF_DB_FALLBACK -- si le nom n’est pas indiqué, celui par défaut
est « filename ».
Il y a un problème avec l’utilisation des paramètres de
DEBCONF_DB_FALLBACK : alors que la base de données de secours peut
fournir des réponses à des questions que les autres bases de données
debconf n’ont jamais vues, on ne l’interroge qu’en dernier lieu : après
les autres bases de données. Si vous avez besoin d’annuler
temporairement une valeur existante sur l’hôte distant, vous devriez
plutôt utiliser la variable DEBCONF_DB_OVERRIDE. Comme
DEBCONF_DB_FALLBACK, elle configure une base de données temporaire,
mais cette base de données est consultée avant les autres et peut être
utilisée pour remplacer les valeurs existantes.
Développer pour debconf
Les développeurs de paquet et ceux qui veulent développer des paquets
qui utilisent debconf devraient lire debconf-devel(7).
Brièvement, debconf communique avec des scripts de maintenance ou
d’autres programmes via les entrée et sortie standard, en utilisant un
langage orienté ligne de commandes semblable à ce qui est utilisé par
les protocoles usuels de l’internet comme SMTP. Les programmes
utilisent ce protocole pour demander à debconf d’afficher les questions
et de récupérer les réponses de l’utilisateur. Les questions
elles-mêmes sont définies dans des fichiers séparés, appelés
« questionnaires », dont le format n’est pas très différent de celui
d’un fichier de contrôle de Debian.
Les paquets Debian qui utilisent debconf fournissent généralement un
questionnaire et un script de « configuration » (exécuté pour
préconfigurer le paquet) dans la partie métadonnées du paquet.
ENVIRONNEMENT
DEBIAN_FRONTEND
Utilisée pour changer temporairement l’interface debconf
utilisée. Voir plus haut.
DEBIAN_PRIORITY
Utilisée pour changer temporairement la priorité que les
questions doivent avoir (au minimum) pour être affichées par
debconf. Voir plus haut.
DEBCONF_DEBUG
Active l’affichage du débogage sur la sortie standard d’erreur.
Elle peut être fixée par le nom d’un mécanisme ou par une
expression rationnelle qui correspond au nom d’un mécanisme
(comme « .* » pour afficher toutes les informations de
débogage). Les noms de mécanisme incluent :
user Informations de débogage intéressantes pour un
utilisateur de debconf.
developer
Informations de débogage intéressantes pour un
développeur de paquet.
db Informations de débogage concernant la base de données
sous-jacente.
DEBCONF_NOWARNINGS
Positionnez-la à « yes » pour désactiver certains avertissements
que debconf pourrait afficher. Elle ne supprime pas l’affichage
des erreurs fatales.
DEBCONF_TERSE
Positionnez-la à « yes » pour activer le mode concis dans lequel
les interfaces debconf suppriment autant que possible le
bavardage.
DEBCONF_DB_FALLBACK
Ajouter une base de données en plus de celles utilisées
habituellement, elle est donc utilisée en secours pour obtenir
les informations de configuration. Voir la section
« Installation des paquets sans surveillance » plus haut. Si la
valeur de la variable est le nom d’une base de données existante
dans debconf.conf, la base de données sera alors utilisée.
Néanmoins, la variable d’environnement peut être utilisée pour
configurer une base de données à la volée, en donnant le type de
la base de données et des paramètres optionnels (champ:valeur)
après le type et entre accolades. Les espaces sont utilisées
pour séparer les champs, vous ne pourrez donc pas spécifier de
valeur de champ contenant des espaces.
La ligne suivante demande l’utilisation de fallbackdb dans
debconf.conf :
DEBCONF_DB_FALLBACK=fallbackdb
Alors que cette ligne configure une nouvelle base de données de type
fichier, donne un nom de fichier à utiliser et désactive toute
sauvegarde :
DEBCONF_DB_FALLBACK=File{Filename:/root/config.dat Backup:no}
En résumé, cette ligne configure une base de données de type Fichier
avec un nom de fichier :
DEBCONF_DB_FALLBACK=File{/root/config.dat}
Remarquez que si la base de données de secours est configurée à la
volée, elle sera utilisable en lecture seule par défaut.
DEBCONF_DB_OVERRIDE
Ajouter une base de données avant celles utilisées normalement,
elle peut donc remplacer les valeurs des autres. La valeur de la
variable fonctionne de la même manière que pour
DEBCONF_DB_FALLBACK.
DEBCONF_DB_REPLACE
Utiliser une base de données particulière au lieu des bases de
données utilisées normalement. Cela peut être utile pour des
tests avec une base de données séparée sans avoir à créer de
fichier debconf.conf séparé, ou pour éviter de verrouiller les
bases de données normales.
DEBCONF_SYSTEMRC
Si cette variable d’environnement est définie, debconf ignorera
le fichier ~/.debconfrc de l’utilisateur et utilisera à la place
le fichier de configuration du système.
DEBCONF_FORCE_DIALOG
Si cette variable d’environnement est définie, debconf utilisera
de préférence dialog à whiptail pour l’interface dialog.
DEBCONF_FORCE_XDIALOG
Si cette variable d’environnement est définie, debconf utilisera
de préférence Xdialog à whiptail pour l’interface dialog.
DEBCONF_NONINTERACTIVE_SEEN
Positionné à "true", cela positionne le drapeau « seen » pour
les questions posées dans l’interface non interactive.
BOGUES
Probablement beaucoup, il y a beaucoup de code ici.
Si vous présentez un rapport de bogue, assurez-vous d’inclure les
informations suivantes :
* l’interface debconf que vous utilisiez lorsque le problème est
survenu ;
* ce que vous avez fait pour déclencher le problème ;
* le texte complet des messages d’erreur. Si vous pouvez
reproduire le bogue, faites-le avec DEBCONF_DEBUG=’.*’ définie
et exportée. Cela accélère beaucoup le débogage.
VOIR AUSSI
debconf.conf(5), debconf-devel(7), dpkg-preconfigure(8),
dpkg-reconfigure(8), debconf(1),
AUTEUR
Joey Hess <joeyh@debian.org>
TRADUCTION
Julien Louis <ptitlouis@sysif.net>, 2005
Cyril Brulebois <kibi@debian.org>, 2006
Veuillez signaler toute erreur de traduction en écrivant à
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet debconf.