DEBCONF(7) | Miscellaneous Information Manual | DEBCONF(7) |
debconf - Sistema de configuração de pacotes Debian
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).
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.
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.
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:
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.
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.
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:
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.
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/.
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.
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.
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.
Provavelmente alguns, existe muito código aqui.
Se você preencher um relatório de bug, certifique-se que inclui a seguinte informação:
debconf.conf(5), debconf-devel(7), dpkg-preconfigure(8), dpkg-reconfigure(8), debconf(1),
Joey Hess <joeyh@debian.org>
Américo Monteiro <a_monteiro@netcabo.pt>, 2010,2012
Por favor comunique quaisquer erros de tradução para a_monteiro@netcabo.pt, l10n@debianpt.org, ou submeta um relatório de bug contra o pacote debconf.