NOME
debconf - Sistema de configuração de pacotes DebianDESCRIÇÃ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).
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.
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.