NOME

debconf - Sistema de configuração de pacotes Debian

DESCRIÇÃO

Debconf é um sistema de configuração para pacotes Debian. Existe um comando raramente usado chamado debconf, documentado em debconf(1)
O debconf disponibiliza uma interface consistente para configurar pacotes, permitindo-lhe escolher entre vários frontends de interface de utilizador. Suporta a pré-configuração de pacotes antes deles serem instalados, o que permite que grandes instalações e actualizações lhe perguntem toda a informação necessária de avanço e depois façam o trabalho enquanto você faz outras coisas. Permite-lhe, se estiver com pressa, saltar as questões menos importantes e informação instala um pacote (e o revisita mais tarde).

Pré-configurando pacotes

O debconf pode configurar os pacotes antes de eles estarem instalados no seu sistema. Isto é útil porque permite que todas as questões que os pacotes vão perguntar seja perguntadas no princípio da instalação, então o resto da instalação pode prosseguir enquanto você vai beber um café.
Se você usa o apt (versão 5.0 ou posterior), e tem o apt-utils instalado, cada pacote que o apt instala será automaticamente pré-configurado. Isto é controlado via /etc/apt/apt.conf.d/70debconf
Por vezes você pode desejar pré-configurar um pacote manualmente, quando não está a instalá-lo com o apt. Pode usar o dpkg-preconfigure(8) para isso, apenas passe-lhe os nomes de ficheiros dos pacotes que deseja pré-configurar. Você precisa do apt-utils instalado para isto funcionar.

Reconfigurando pacotes

Suponha que instalou um pacote e respondeu às questões do debconf, mas agora que o usou durante algum tempo, percebe que quer voltar atrás e alterar algumas das suas respostas. No passado, a reinstalação do pacote era muitas vezes o caminho a seguir nesta situação, mas quando reinstala o pacote, o debconf parece lembrar-se que você já respondeu às questões, e não as pergunta de novo (isto é uma característica).
Felizmente, o debconf facilita a reconfiguração de qualquer pacote que o use. Suponha que quer reconfigurar o próprio debconf. Como root, execute:
dpkg-reconfigure debconf
Isto irá perguntar-lhe todas as perguntas que viu quando o debconf foi instalado pela primeira vez. Pode também fazer-lhe outras perguntas, pois pergunta até questões de baixa prioridade que podem ter sido ignoradas quando o pacote foi instalado. Você pode também usá-lo em qualquer outro pacote que use debconf.

Frontends

Uma das características únicas do debconf é que a interface que lhe apresenta é uma de muitas, que podem ser trocadas quando deseja. Existem muitos frontends do debconf disponíveis:
dialog
O frontend predefinido, isto usa os programas whiptail(1) ou dialog(1) para lhes mostrar perguntas. Funciona em modo de texto.
readline
O frontend mais tradicional, isto parece mesmo com o que a configuração da Debian sempre foi: uma série de questões, escritas na consola usando texto simples, e mostra os "prontos" usando a biblioteca readline. Até suporte acabamentos com a tecla tab. O pacote libterm-readline-gnu-perl é fortemente recomendado se escolher usar este frontend; o módulo predefinido do readline não suporta chamadas ao utilizador (prompt) com valores predefinidos. No mínimo você precisa do pacote perl-modules instalado para usar este frontend.
Este frontend tem algumas teclas de atalho especiais. Pageup (ou ctrl-u) irá voltar para a questão anterior (se isso for suportado pelo pacote que usa o debconf), e pagedown (ou ctrl-v) irá saltar em frente para a próxima questão.
Este é o melhor frontend para trabalho de administração remota por uma ligação lenta, ou para aqueles que estão confortáveis com o unix.
noninteractive
Este é o anti-frontend. Nunca interage consigo de modo algum, e faz com que as respostas predefinidas sejam usadas por todas as questões. Pode enviar mails de erro para o root, mas é só; caso contrário é completamente silencioso e discreto, um frontend perfeito para instalações automáticas. Se você está a usar este frontend e precisa de respostas não predefinidas para as questões, você precisa de pré-semear a base de dados do debconf, veja a secção em baixo em Instalação de 'Pacotes Não Acompanhada' para mais detalhes.
gnome
Isto é uma GUI X moderna que usa as bibliotecas gtk e gnome. Claro que necessita de um DISPLAY válido para funcionar; o debconf irá cair para para outros frontends se este não puder funcionar. Note que este frontend requer que tenha o pacote libgtk3-perl instalado.
kde
Este frontend disponibiliza uma GUI X moderna baseada na plataforma KDE. Claro que você precisa de um DISPLAY para usar este frontend e você tem de instalar o pacote debconf-kde-helper. O frontend irá cair para dialog se algum dos pre-requisitos não estiver satisfeito.
editor
Isto é para aqueles fanáticos que têm de fazer tudo num editor de texto. Executa o seu editor num ficheiro que parece algo como um ficheiro de configuração típico do unix, e você edita o ficheiro para comunicar com o debconf. O autor do debconf prefere não comentar sobre as circunstâncias que levaram à criação deste frontend.
web
Este frontend actua como um servidor web, onde você se liga com o seu navegador web, para explorar as perguntas e responder a elas. Tem muito a prometer, mas ainda precisa de muito trabalho. Quando este frontend arranca, escreve a localização para onde deve apontar o seu navegador web. Por razões de segurança, você tem que executar o navegador web na mesma máquina que está a configurar.
Tenha sempre em mente que este não é um frontend muito seguro. Qualquer pessoa que tenha acesso ao computador quando está a ser configurado pode aceder ao servidor web e configurar coisas enquanto este frontend está em execução. Portanto isto é mais uma prova de concepção que outra coisa.
Você pode mudar o frontend predefinido que o debconf usa ao reconfigurar o debconf. Por outro lado, se apenas deseja mudar o frontend por um minuto, você pode definir a variável de ambiente DEBIAN_FRONTEND para o nome do frontend a usar. Por exemplo:
DEBIAN_FRONTEND=readline apt-get install slrn
Os comandos dpkg-reconfigure(8) e dpkg-preconfigure(8) também lhe permitem passar --frontend= para eles, seguido do frontend que deseja que estes usem.
Note que nem todos os frontends irão funcionar em todas as circunstâncias, Se um frontend falhar ao arrancar por alguma razão, o debconf irá escrever uma mensagem a explicar porquê, e irá 'cair' para o frontend semelhante seguinte.

Propriedades

Outra funcionalidade agradável do debconf é que as perguntas que lhe faz são priorizadas. Se você não deseja ser incomodado com todos os pequenos detalhes, você pode configurar o debconf para apenas perguntar as questões mais importantes. Por outro lado, se você é um viciado em controle, pode fazê-lo mostrar todas as perguntas. Cada pergunta tem uma prioridade. A ordem de importância em sequência crescente:
low
Questões muito triviais que têm predefinições que irão funcionar na vasta maioria dos casos.
medium
Questões normais que têm predefinições razoáveis.
high
Questões que não têm uma predefinição razoável.
critical
Questões que você precisa realmente de ver (ou então nada feito).
Apenas as questões com uma prioridade igual ou maior que a prioridade que escolheu lhe serão mostradas. Você pode definir o valor da prioridade ao reconfigurar o debconf, ou temporariamente passando --priority= seguido do valor aos comandos dpkg-reconfigure(8) e dpkg-preconfigure(8), ou ao definir a variável de ambiente DEBIAN_PRIORITY.

Base de Dados de Backend

O debconf usa base de dados de backend muito flexível e potencialmente complicada para armazenar dados como as respostas às questões. O ficheiro /etc/debconf.conf é usado para configurar esta base de dados. Se você precisar de definir algo complicado, como fazer o debconf ler uma base de dados remota para obter predefinições, com sobreposições locais, leia o manual debconf.conf(5) para todos os detalhes mais chatos. Geralmente, a base de dados de backend está localizada em /var/cache/debconf/.

Instalação de Pacotes Não Acompanhada

Se você tem muitas máquinas para gerir irá por vezes deparar-se com a necessidade de executar uma instalação não acompanhada ou a actualização de pacotes em muitos sistemas, onde as respostas predefinidas de algumas perguntas de configuração não são aceitáveis. Há muitas maneiras de fazer isto; todas envolvem definir uma base de dados e fazer o debconf usá-la para obter as respostas que você quer.
Você deveria mesmo ler debconf.conf(5) antes desta secção, pois precisa de compreender como funcionam as bases de dados do debconf.
A maneira mais fácil de definir uma base de dados é instalar os pacotes em uma máquina e responder às suas perguntas como usualmente. Ou você pode usar dpkg-preconfigure(8) para configurar um conjunto de pacotes sem realmente os instalar. Ou você pode até decidir escrever uma base de dados debconf em texto simples manualmente ou algo do género.
Após ter a base de dados, você precisa descobrir como fazer os sistemas remotos usá-la. Isto claro que depende da configuração desses sistemas e quais são os tipos de bases de dados que eles têm definido para usar.
Se você está a usar uma base de dados debconf LDAP, uma rede inteira de máquinas debian podem ter as questões de instalação de qualquer ou todos os pacotes respondidas automaticamente por um único servidor LDAP.
Mas talvez você esteja a usar algo um pouco mais fácil como, digamos, a configuração de base de dados debconf predefinida, ou você apenas não quer que os seus sistemas remotos usem LDAP a toda a hora. Neste caso a melhor aproximação é configurar temporariamente os sistemas remotos para empilhar a sua base de dados por baixo das já existentes e próprias bases de dados, para que puxem valores predefinidos dela. O debconf oferece duas variáveis de ambiente, DEBCONF_DB_FALLBACK e DEBCONF_DB_OVERRIDE, para tornar mais fácil fazer isto na hora. Aqui está um exemplo de utilização:

cat /var/cache/debconf/config.dat | \
ssh root@target "DEBIAN_FRONTEND=noninteractive \
DEBCONF_DB_FALLBACK=Pipe apt-get upgrade"
Isto faz com que o debconf na máquina remota leia os dados que são canalizados pela ligação ssh e os interprete como uma base de dados debconf em formato de texto. Depois usar essa base de dados como uma base de dados de reserva (fallback) -- uma base de dados só de leitura que é questionada por respostas a perguntas se a base de dados debconf principal do sistema não tiver as respostas.
Aqui está outro modo de usar a variável de ambiente DEBCONF_DB_FALLBACK:

ssh -R 389:ldap:389 root@target \
"DEBCONF_DB_FALLBACK='LDAP{host:localhost}' apt-get upgrade"
Aqui é usado ssh para configurar uma ligação LDAP em túnel e correr o debconf. Ao debconf é dito para usar o servidor LDAP como base de dados fallback. Note o uso de "{host:localhost}" para configurar como o debconf acede à base de dados LDAP ao disponibilizar o campo "host" com um valor de "localhost".
Aqui está outro método:

scp config.dat root@target:
ssh root@target "DEBCONF_DB_FALLBACK='File{/root/config.dat}' apt-get upgrade
Aqui você copia a base de dados com scp, e depois usa ssh para fazer com que o debconf use o ficheiro que copiou. Isto ilustra um atalho que pode usar nos parâmetros DEBCONF_DB_FALLBACK -- se um nome de campo for deixado, usará por predefinição "filename".
Há apenas um problema com estes usos do parâmetro DEBCONF_DB_FALLBACK. Enquanto a base de dados fallback pode disponibilizar respostas a questões que as outras bases de dados debconf nunca viram, é apenas questionada como uma reserva; depois das outras bases de dados. Se você precisa de sobrepor temporariamente um valor existente na máquina remota, deve usar a variável DEBCONF_DB_OVERRIDE em vez desta. Tal como DEBCONF_DB_FALLBACK, define uma base de dados temporária, mas esta base de dados é consultada antes das outras, e pode ser usada para sobrepor valores existentes.

Desenvolvendo para Debconf

Programadores de pacotes e outros que desejam desenvolver pacotes que usam debconf devem ler debconf-devel(7).
Resumindo, o debconf comunica com scripts do maintainer ou outros programas via entradas e saídas standard, usando uma simples linguagem de comandos orientada a linhas semelhante à usada por protocolos comuns de internet como o SMTP. Os programas usam este protocolo para pedir ao debconf para mostrar questões ao utilizador, e recolher as respostas dos utilizadores. As próprias questões são definidas num ficheiro separado, chamado o ficheiro "templates", o qual tem um formato não muito diferente de um ficheiro de controle debian.
Os pacotes debian que usam debconf tipicamente disponibilizam ambos; um ficheiro de templates e um script de configuração (executado para pré-configurar o pacote) na secção de meta-dados de control do pacote.

AMBIENTE

DEBIAN_FRONTEND
Usado para alterar temporariamente o frontend que o debconf usa. Veja em cima.
DEBIAN_PRIORITY
Usado para alterar temporariamente a prioridade mínima das questões que o debconf irá mostrar. Veja em cima.
DEBCONF_DEBUG
Liga a saída de depuração no erro standard. Pode ser definido para um nome de instituição ou uma expressão regular que corresponda a um nome de instituição (tal como '.*' para gerar toda a informação de depuração). Os nomes de instituições incluem:
user
Informação de depuração de interesse a um utilizador do debconf.
developer
Informação de depuração de interesse para um programador de pacote.
db
Informação de depuração acerca da base de dados backend.
DEBCONF_NOWARNINGS
Definir para "yes" para desactivar alguns avisos que o debconf pode mostrar. Não suprime a exibição de erros fatais.
DEBCONF_TERSE
Definir para "yes" para activar o modo "terse", no qual os frontends do debconf cortam na exibição de detalhes o máximo possível.
DEBCONF_DB_FALLBACK
Empilha uma base de dados após as bases de dados normalmente usadas, para que a use como uma reserva de onde obter informação de configuração. Veja "Instalação de Pacotes Não Acompanhada" em cima. Se o valor da variável for o nome de uma base de dados existente em debconf.conf, então essa base de dados será usada. Caso contrário, a variável de ambiente pode ser usada para configurar uma base de dados na hora, ao dizer-lhe o tipo de base de dados, e passar opcionalmente definições de campo:valor, dentro de chavetas após o tipo. Os espaços são usados para separar os campos, portanto você não pode especificar um valor que tenha espaços em branco.
Assim, isto usa o fallbackdb em debconf.conf:
DEBCONF_DB_FALLBACK=fallbackdb
Enquanto isto define uma nova base de dados do tipo File, e diz-lhe um nome de ficheiro a usar e desliga os backups:
DEBCONF_DB_FALLBACK=File{Filename:/root/config.dat Backup:no}
E de forma abreviada, isto define uma base de dados do tipo File com um nome de ficheiro:
DEBCONF_DB_FALLBACK=File{/root/config.dat}
Note que se uma base de dados de emergência (fallback) for definida na hora, irá ficar em apenas-leitura por predefinição.
DEBCONF_DB_OVERRIDE
Empilha uma base de dados antes das bases de dados usadas normalmente, para que possa sobrepor valores delas. O valor da variável funciona do mesmo modo que o valor de DEBCONF_DB_FALLBACK.
DEBCONF_DB_REPLACE
Usa uma base de dados fornecida em vez das bases de dados normalmente usadas. isto pode ser útil para testes com uma base de dados separada sem ter que criar um debconf.conf separado, ou para evitar bloquear as bases de dados normais.
DEBCONF_SYSTEMRC
Se esta variável de ambiente estiver definida, o debconf irá ignorar o ficheiro ~/.debconfrc do utilizador, e em vez deste, usar o do sistema. Se estiver definida para o nome de um ficheiro regular, o debconf irá usar esse ficheiro em preferência dos ficheiros de configuração do sistema.
DEBCONF_FORCE_DIALOG
Se esta variável de ambiente estiver definida, o debconf irá usar o dialog em preferência do whiptail para o frontend do diálogo.
DEBCONF_FORCE_XDIALOG
Se esta variável de ambiente estiver definida, o debconf irá usar o Xdialog em preferência do whiptail para o frontend de diálogo.
DEBCONF_NONINTERACTIVE_SEEN
Definido para "true" fará definir a bandeira "visto" nas perguntas feitas no frontend noninteractive.

BUGS

Provavelmente alguns, existe muito código aqui.
Se você preencher um relatório de bug, certifique-se que inclui a seguinte informação:
*
O frontend do debconf que estava a usar quando o problema ocorreu
*
O que você fez para despoletar o problema.
*
O texto completo de quaisquer mensagens de erro. Se você consegue reproduzir o bug, faça-o com DEBCONF_DEBUG='.*' definido e exportado. Isto acelera imenso a depuração.

VEJA TAMBÉM

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

AUTOR

Joey Hess <[email protected]>

TRADUÇÃO

Américo Monteiro <[email protected]>, 2010,2012
 
 
Por favor comunique quaisquer erros de tradução para [email protected], [email protected], ou submeta um relatório de bug contra o pacote debconf.

Recommended readings

Pages related to debconf you should read also: