Gostaria de configurar o pacote ubuntu via dpkg-reconfigure com todos os valores fornecidos pelo modo não interativo (no script).
Na verdade, meu caso é a configuração do firebird ( http://www.firebirdsql.org/manual/ubusetup.html ), que ao usar o comando:
sudo dpkg-reconfigure firebird2.5-superclassic -freadline
pergunta-me os 2 valores, onde as respostas seriam 'Y' e 'newpwd'.
A saída de amostra é assim:
sudo dpkg-reconfigure firebird2.5-superclassic -freadline
* Firebird 2.5 superclassic server not running
Configuring firebird2.5-superclassic
------------------------------------
Accept if you want Firebird server to start automatically.
If you only need the Firebird client and there are no databases that will be served by this host, decline.
Enable Firebird server? Y
Password for firebird 2.5
-------------------------
Firebird has a special user named SYSDBA, which is the user that has access to all databases. SYSDBA can also create new databases and users. Because of this, it
is necessary to secure SYSDBA with a password.
The password is stored in /etc/firebird/2.5/SYSDBA.password (readable only by root). You may modify it there (don't forget to update the security database too,
using the gsec utility), or you may use dpkg-reconfigure to update both.
To keep your existing password, leave this blank.
Password for SYSDBA:
* Starting Firebird 2.5 superclassic server...
...done.
* Firebird 2.5 superclassic server already running
Eu tentei here strings
via script bash como este:
sudo dpkg-reconfigure firebird2.5-superclassic -f readline << EOF
Y
newpwd
EOF
No entanto, isso não funcionou por algum motivo e solicitou que os valores fossem fornecidos.
Alguma idéia de como alimentar os valores necessários para o script?
Pacotes Debian usam o debconf para coletar configurações de tempo de instalação. O Debconf suporta múltiplos frontends para solicitar valores ao usuário. A
-f
opção paradpkg-reconfigure
selecionar qual front-end do debconf usar.O
readline
front-end foi projetado para uso interativo. Não o use em um script automático.Se os valores padrão estiverem corretos, basta usar o
noninteractive
frontend.Se você deseja fornecer valores diferentes, você tem duas opções. Você pode ficar com o
noninteractive
frontend e pré-configurar o banco de dados debconf . A maneira mais fácil de fazer isso é instalar o pacote em uma máquina e configurá-lo interativamente, depois extrair as partes relevantes/var/cache/debconf/config.dat
e fornecer esse arquivo ao debconf:Outro método é usar o
editor
frontend e definir a variável de ambienteVISUAL
(ouEDITOR
, masVISUAL
tem precedência sobreEDITOR
se estiver definida) como um programa que utiliza um arquivo que contém as configurações atuais como argumento e sobrescreve esse arquivo pelas configurações desejadas.fonte
/var/cache/debconf/config.dat
. Você pode usardebconf-get-selections
odebconf-utils
pacote. Veja isto por exemplo.dpkg-reconfigure
, o que eu acho que o OP quer automatizar porque ele fará isso com frequência.debconf-get-selections
é provável que seja útil aqui. Se Peter quiser fazer isso frequentemente com valores diferentes, ele deve gerarconfig.dat
dinamicamente (é um formato simples). Isso é mais fácil queexpect
.expect
é o caminho do desespero. Por exemplo, ele será quebrado se uma nova versão do pacote apresentar uma nova pergunta (ou você precisará de um script muito mais sofisticado).Use o
debconf-set-selections
comando para inserir novos valores no banco de dados debconf (/var/cache/debconf/config.dat
).A resposta de Eli não estava clara para mim, então vou explicar passo a passo.
A primeira coisa a fazer é instalar o pacote interativamente e obter as seleções escolhidas por (mude
firebird
para o nome do seu pacote):ou:
Em seguida, pré-propague o banco de dados debconf com respostas
debconf-set-selections
, por exemplo:onde a sintaxe é:
Aqui está outro exemplo de
ttf-mscorefonts-installer
pacote:Nota: As seleções de entrada podem ser da entrada padrão ou do arquivo.
Verifique:
man debconf-set-selections
para mais informações.Uma maneira alternativa é usar o Kickstart .
fonte
Estou bisbilhotando há cerca de uma hora tentando condensar a solução para isso em uma única linha e finalmente a encontrei: debconf-set-selections
Isso forçará o debconf a usar os padrões e não incomodá-lo. Você também pode definir os padrões de configuração para qualquer pacote Debian, consulte a página de manual para mais informações.
fonte
sudo dpkg-reconfigure debconf -f noninteractive
ouexport DEBIAN_FRONTEND=noninteractive
?Eu tenho tentado fazer a reconfiguração com script das configurações LDAP (pacote ldap-auth-config) usando o método debconf-get-selections / set-selections mencionado acima, apenas para descobrir que este pacote ignora as configurações no debconf após a instalação inicial. Você pode usar o debconf para pré-propagar antes da instalação, mas após a instalação, o ldap-auth-config prefere sobrescrever suas configurações do debconf pelo que estiver definido nos arquivos de configuração do sistema que gerencia. O pacote pam-auth-config tem o mesmo comportamento.
O mecanismo EDITOR / VISUAL também é difícil de usar neste caso, porque o ldap-auth-config o invoca várias vezes para diferentes conjuntos de perguntas. Ele pode ser tratado mais facilmente com um script de expectativa ou modificando diretamente os arquivos de configuração do sistema. Portanto, nem sempre é fácil evitar voltar a esperar!
fonte