DEBCONF(7) | Miscellaneous Information Manual | DEBCONF(7) |
debconf - Sistema de configuración de paquetes de Debian
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.
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.
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.
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:
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.
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.
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:
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».
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/.
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.
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.
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.
Posiblemente varios, este programa tiene mucho código.
Si remite un informe de fallo, asegúrese de incluir la siguiente información:
debconf.conf(5), debconf-devel(7), dpkg-preconfigure(8), dpkg-reconfigure(8), debconf(1),
Joey Hess <joeyh@debian.org>
Omar Campagne Polaino <ocampagne@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@lists.debian.org>.