Manpages

NOMBRE

debconf - Sistema de configuración de paquetes de Debian

DESCRIPCIÓN

Debconf es un sistema de configuración para paquetes de Debian. Existe una orden raramente usada llamada debconf, documentada en debconf(1)

Debconf ofrece una interfaz uniforme para la configuración de paquetes, que permite escoger entre varias interfaces de usuario. Es capaz de preconfigurar paquetes antes de la instalación, lo cual permite que grandes instalaciones y actualizaciones soliciten toda la información necesaria para su puesta a punto, para después proseguir la instalación mientras usted hace algo distinto. Le permite, si tiene prisa, omitir las preguntas e información de menor importancia al instalar un paquete, y verlas más tarde.

Preconfigurar paquetes

Debconf puede configurar paquetes incluso antes de su instalación en su sistema. Es útil ya que permite que los paquetes realicen todas las preguntas al inicio de la instalación, de forma que la instalación pueda proceder mientras se toma una taza de café.

Si usa apt (la versión 0.5 o posterior) y apt-utils está instalado, cada paquete que apt instale se preconfigurará automáticamente. Esto se controla mediante /etc/apt/apt.conf.d/70debconf.

A veces puede que desee preconfigurar un paquete directamente cuando no lo instala con apt. Para ello, puede usar dpkg-preconfigure(8); simplemente introduzca los nombres de fichero de los paquetes que desea preconfigurar. Necesitará que apt-utils esté instalado para que funcione.

Reconfigurar paquetes

Suponga que ha instalado el paquete y que ha contestado a las preguntas de debconf, pero ya lleva un tiempo usándolo y se da cuenta de que desea volver atrás y cambiar alguna de sus respuestas. En el pasado, esta situación se solucionaba habitualmente instalando el paquete otra vez, pero cuando reinstala un paquete parece que debconf recuerda cómo contestó a las preguntas, y no las plantea otra vez (esto es una funcionalidad).

Afortunadamente, debconf facilita reconfigurar cualquier paquete que hace uso de él. Suponga que desea reconfigurar precisamente debconf. Sencillamente, ejecute lo siguiente como administrador:
dpkg-reconfigure debconf

Esto planteará todas las preguntas que vio la primera vez que instaló debconf. Puede que también le haga otras preguntas, ya que pregunta incluso las cuestiones con baja prioridad que se pueden haber omitido al instalar el paquete. Puede usar esta orden con cualquier otro paquete que también usa debconf.

Interfaces

Una de las características únicas de debconf es que la interfaz que le presenta es sólo una de entre varias posibles, que puede intercambiar como desee. Puede interactuar con debconf a través de varias interfaces:

dialog

La interfaz predefinida, que usa los programas whiptail(1) o dialog(1) para mostrar las preguntas. Funciona en modo de texto.

readline

La interfaz más tradicional, que se parece a como siempre ha sido la configuración de Debian: una serie de preguntas mostradas por el intérprete de órdenes usando texto simple, y que realiza preguntas a través de la biblioteca readline. También acepta el completado automático con el tabulador. Recomendamos encarecidamente el paquete libterm-readline-gnu-perl si escoge usar esta interfaz; el módulo predefinido de readline no permite realizar preguntas con valores predefinidos especiales. Como mínimo, necesitará instalar el paquete perl-modules para usar esta interfaz.

Esta interfaz posee algunas teclas rápidas especiales. La tecla repág (o «Ctrl-u») volverá a la última pregunta (si es compatible con el paquete que usa debconf), y la tecla avpág (o «Ctrl-v») pasará a la siguiente pregunta.

Esta es la mejor interfaz para tareas de administración remota a través de una conexión lenta, o para que aquellos que están cómodos con Unix.

noninteractive

Esta es la anti interfaz. Nunca interactúa con usted y acepta las respuestas predefinidas para todas las preguntas. Puede que envíe correos de error al administrador, pero eso es todo; por otra parte, es totalmente silenciosa y discreta, la interfaz perfecta para instalaciones automáticas. Si está usando esta interfaz y necesita respuestas no predefinidas para preguntas, tendrá que configurar previamente («preseed») la base de datos de debconf; para más información consulte la sección más abajo «Instalación desatendida de paquetes».

gnome

This is a modern X GUI using the gtk and gnome libraries. Of course, it requires a valid DISPLAY to work; debconf will fall back to other frontends if it can’t work. Note that this frontend requires you have the libgtk3-perl package installed.

kde

This frontend provides a modern X GUI based on the KDE Platform. You of course need a DISPLAY to use this frontend and you must install debconf-kde-helper package. The frontend will fall back to dialog if some of the prerequisites are not met.

editor

Esto es para aquellos fanáticos que tienen que hacer todo lo posible con un editor de texto. Ejecuta su editor en un fichero similar a un fichero de configuración típico de Unix, y puede editar el fichero para comunicarse con debconf. Los autores de debconf prefieren no hacer comentarios sobre las circunstancias que llevaron a escribir esta interfaz.

web

Esta interfaz actúa como un servidor web al que se conecta con su navegador de internet para explorar y responder a las preguntas. Es muy prometedor aunque por ahora un tanto inacabado. Al iniciarse, mostrará la ubicación a la que debería apuntar su navegador web. Por razones de seguridad, tendrá que ejecutar el navegador en la misma máquina que está configurando.

Tenga en cuenta que no es una interfaz muy segura. Cualquier persona con acceso al sistema que se está configurando puede acceder al servidor web y configurar cosas mientras se esté ejecutando esta interfaz. Esto es más una idea puesta en práctica que una funcionalidad acabada.

Puede cambiar la interfaz que usa debconf reconfigurando debconf. Por otra parte, si desea cambiar la interfaz sólo por un momento puede definir la variable de entorno «DEBIAN_FRONTEND» con el nombre de la interfaz a usar. Por ejemplo:
DEBIAN_FRONTEND=readline apt-get install slrn

Las órdenes dpkg-reconfigure(8) y dpkg-preconfigure(8) aceptan la opción --frontend=, seguida de la interfaz que desea que usen.

Tenga en cuenta que no todas las interfaces funcionan en todas las situaciones. Si una interfaz falla al iniciarse por cualquier razón, debconf mostrará un mensaje que explica la razón y usará la siguiente interfaz más parecida.

Prioridades

Otra característica interesante de debconf es que prioriza las preguntas que se le hacen. Si no desea ser molestado por cada pequeña cuestión puede configurar debconf para que sólo plantee las preguntas más importantes. Por otra parte, si es un obseso del control puede hacer que muestre todas las preguntas. Cada pregunta tiene una prioridad. En orden creciente de importancia:

low

Preguntas muy triviales con valores predefinidos que funcionarán en la gran mayoría de los casos.

medium

Preguntas normales con unos valores predefinidos razonables.

high

Preguntas que no tienen un valor predefinido razonable.

critical

Las preguntas que realmente, de verdad, necesita ver.

Sólo se le mostrarán las preguntas con una prioridad igual o superior a la prioridad que seleccione. Puede definir el valor de la prioridad reconfigurando debconf, introduciendo temporalmente --priority= seguido del valor a las órdenes dpkg-reconfigure(8) y dpkg-preconfigure(8), o definiendo la variable de entorno «DEBIAN_PRIORITY».

Sistema de la base de datos

Debconf usa un sistema de base de datos muy flexible y potencialmente complicado para almacenar datos tales como las respuestas a las preguntas. El fichero /etc/debconf.conf sirve para configurar esta base de datos. Si necesita configurar algo complicado, como hacer que debconf lea una base de datos remota para obtener los valores predefinidos, introduciendo cambios locales, lea la página de manual debconf.conf(5) para todos los detalles específicos. Habitualmente, el sistema de la base de datos se encuentra en /var/cache/debconf/.

Instalación desatendida de paquetes

Si gestiona varios sistemas, a veces tendrá la necesidad de realizar una instalación o actualización desatendida de paquetes en varios sistemas, incluyendo cuando las respuestas predefinidas a algunas preguntas de configuración no sean aceptables. Existen varias formas de abordar esto; todas implican la creación de una base de datos y hacer que debconf use las respuestas que desea.

Recomendamos que lea debconf.conf(5) antes de leer esta sección, ya que tiene que entender el funcionamiento de las bases de datos de debconf.

La forma más sencilla de configurar la base de datos es instalar los paquetes en un sistema y responder a las preguntas de la forma habitual, o puede usar dpkg-preconfigure(8) para configurar un conjunto de paquetes sin instalarlos realmente. También puede decidir escribir una base de datos de debconf a mano o algo así.

Una vez que tiene la base de datos, tendrá que averiguar cómo hacer que los sistemas remotos lo usen. Por supuesto, esto depende de la configuración de esos sistemas y de los tipos de base de datos para los que están configurados.

Si está usando la base de datos LDAP de debconf, puede responder a las preguntas de instalación de paquetes para toda una red de sistemas Debian con un sólo servidor LDAP.

Pero puede que esté usando algo más sencillo de configurar que, por ejemplo, la configuración predefinida de la base de datos debconf, o sencillamente no desea que sus sistemas remotos usen LDAP todo el tiempo. En este caso, el mejor enfoque es configurar temporalmente los sistemas remotos para que apilen («stack») su base de datos debajo de sus bases de datos existentes de forma que obtengan de éste los valores predefinidos. Debconf ofrece dos variables de entorno, «DEBCONF_DB_FALLBACK» y «DEBCONF_DB_OVERRIDE» para facilitar realizar esto en el momento. Éste es un ejemplo de uso:

cat /var/cache/debconf/config.dat | \
ssh root@target "DEBIAN_FRONTEND=noninteractive \
DEBCONF_DB_FALLBACK=Pipe apt-get upgrade"

Esto hace que el sistema debconf en el sistema remoto lea los datos introducidos a través de la conexión ssh, interpretándolo como un formato de texto simple de base de datos de debconf. A continuación, usa esa base de datos como una base de datos alternativa; una base de datos de sólo lectura que se consulta para obtener las respuestas a preguntas en el caso de que la base de datos de debconf principal del sistema no tenga respuestas.

Aquí tiene otra forma de usar la variable de entorno «DEBCONF_DB_FALLBACK»:

ssh -R 389:ldap:389 root@target \
"DEBCONF_DB_FALLBACK=’LDAP{host:localhost}’ apt-get upgrade"

En este caso, se usa una conexión ssh para configurar una conexión LDAP y para ejecutar debconf. Se dice a Debconf que use el servidor LDAP como la base de datos alternativa. Observe el uso de «{host:localhost}» para configurar la forma en que debconf accede a la base de datos LDAP proporcionando el campo «host» con un valor de «localhost».

Éste es otro método:

scp config.dat root@target:
ssh root@target "DEBCONF_DB_FALLBACK=’File{/root/config.dat}’ apt-get upgrade

En este caso, se copia la base de datos a través de scp, y después a través de ssh, haciendo que debconf use el fichero copiado. Esto ilustra una forma abreviada que puede usar como parámetro de «DEBCONF_DB_FALLBACK». Si no se rellena un nombre de campo, el valor predefinido es «filename».

Sólo existe un problema al usar el parámetro «DEBCONF_DB_FALLBACK» de esta forma: mientras que la base de datos alternativa puede proporcionar las respuestas a preguntas que las otras bases de datos de debconf nunca han visto, sólo se consulta después de consultar las otras bases de datos. Si desea anular de forma temporal un valor existente en el sistema remoto debería usar la variable «DEBCONF_DB_OVERRIDE». Al igual que «DEBCONF_DB_FALLBACK», configura una base de datos temporal, pero esta base de datos se consulta antes que las demás y se puede usar para anular valores existentes.

Desarrollar con Debconf

Los desarrolladores de paquetes y otros que deseen desarrollar paquetes que usan debconf deberían leer debconf-devel(7).

Resumiendo, debconf se comunica con los scripts del desarrollador u otros programas a través de la entrada y salida estándar usando un lenguaje parecido a la línea de órdenes similar a los usados por protocolos de Internet comunes, tales como SMTP. Los programas usan este protocolo para hacer que debconf muestre preguntas al usuario, y obtener sus respuestas. Las preguntas en sí se definen en un fichero separado, llamado el «fichero de plantillas», el cual tiene un formato similar al fichero de control de Debian.

Habitualmente, los paquetes de Debian que usan debconf proporcionan un fichero de plantillas y un script de configuración (que se ejecuta para preconfigurar el paquete) en la sección de metadatos de control del paquete.

VARIABLES DE ENTORNO

DEBIAN_FRONTEND

Se usa para cambiar temporalmente la interfaz de debconf. Consulte más arriba.

DEBIAN_PRIORITY

Se usa para cambiar temporalmente la prioridad mínima de la pregunta que debconf mostrará. Consulte más arriba.

DEBCONF_DEBUG

Activa la salida de mensajes de depuración a través de la salida de error estándar. Se puede definir con el nombre de una utilidad («facility») o una expresión regular que coincide con el nombre de una función (como «.*» para mostrar toda la información de depuración). Los nombres de utilidad incluyen:

user

Información de depuración de interés para un usuario de debconf.

developer

Información de depuración de interés para un desarrollador de paquetes.

db

Información de depuración del sistema de base de datos.

DEBCONF_NOWARNINGS

Se define con «yes» para desactivar algunos avisos que debconf puede mostrar. No suprime mostrar los errores fatales.

DEBCONF_TERSE

Se define con «yes» para activar el modo conciso, en el cual las interfaces de debconf reducen la verbosidad tanto como es posible.

DEBCONF_DB_FALLBACK

Apila («stack») una base de datos después de las bases de datos usadas habitualmente, de forma que se usa como una alternativa de dónde obtener la información de configuración. Consulte «Instalación desatendida de paquetes», más arriba. Si el valor de la variable es el nombre de una base de datos existente en «debconf.conf», se usará esa base de datos. De no ser así, la variable de entorno se puede usar para configurar una base de datos en el momento, diciendo el tipo de base datos e introduciendo de forma opcional las opciones «campo:valor» entre corchetes, {}, después del tipo de base de datos. Los campos se separan con espacios, y por ello no puede definir un valor de campo que tenga espacios en blanco.

Por lo tanto, esto usa «fallbackdb» en «debconf.conf»:
DEBCONF_DB_FALLBACK=fallbackdb

Mientras que esto configura una base de datos nueva de tipo «File», y le dice el nombre de fichero a usar, desactivando las copias de respaldo:
DEBCONF_DB_FALLBACK=File{Filename:/root/config.dat Backup:no}

Y de forma abreviada, esto configura una base de datos de tipo «File» con un nombre de fichero:
DEBCONF_DB_FALLBACK=File{/root/config.dat}

Observe que una base de datos alternativa se configura en el momento, y por omisión es de sólo lectura.
DEBCONF_DB_OVERRIDE

Apila una base de datos sobre las bases de datos usadas habitualmente, de forma que anula los valores contenidos en éstos. El valor de la variable funciona de la misma forma que el valor de «DEBCONF_DB_FALLBACK».

DEBCONF_DB_REPLACE

Usa una base de datos dada en lugar de las bases de datos usadas habitualmente. Puede ser útil para realizar pruebas con una base de datos separada sin la necesidad de crear un fichero «debconf.conf» independiente, o para evitar el bloqueo de las bases de datos normales.

DEBCONF_SYSTEMRC

Si se define esta variable de entorno, debconf omitirá el fichero de usuario «~/.debconfrc» y usará en su lugar el del sistema. Si se define con el nombre de un fichero normal, debconf usará ese fichero en lugar de los ficheros de configuración del sistema.

DEBCONF_FORCE_DIALOG

Si se define esta variable de entorno, debconf utilizará dialog en lugar de whiptail como la interfaz de diálogo de debconf.

DEBCONF_FORCE_XDIALOG

Si se define esta variable de entorno, debconf utilizará Xdialog en lugar de whiptail como la interfaz de diálogo.

DEBCONF_NONINTERACTIVE_SEEN

Se define con «true» para provocar que la marca «seen» se establezca en las preguntas planteadas en la interfaz no interactiva.

FALLOS

Posiblemente varios, este programa tiene mucho código.

Si remite un informe de fallo, asegúrese de incluir la siguiente información:

*

La interfaz de debconf que estaba usando cuando se detectó el problema.

*

Qué hizo para desencadenar el problema.

*

El texto completo de cualquier mensaje de error. Si puede reproducir el fallo, hágalo con «DEBCONF_DEBUG=’.*’ » definido («set») y exportado («export»). Esto agiliza mucho la depuración.

VÉASE TAMBIÉN

debconf.conf(5), debconf-devel(7), dpkg-preconfigure(8), dpkg-reconfigure(8), debconf(1),

AUTOR

Joey Hess <joeyh [AT] debian.org>

TRADUCCIÓN

Omar Campagne Polaino <ocampagne [AT] gmail.com>, 2010

Si encuentra un fallo en la traducción, por favor, informe de ello en la lista de traducción <debian-l10n-spanish [AT] lists.org>.