Passando respostas padrão para as perguntas de instalação do pacote apt-get?

27

Estou tentando escrever um script de configuração para novos servidores e uma das primeiras etapas é instalar uma série de pacotes necessários, como MySQL, phpMyAdmin, etc. usando apt-get installNo entanto, quando o dpkg tenta configurá-los, você solicita uma poucas opções, como senha root do MySQL, senhas phpMyAdmin, qual servidor usar, etc.

Como provavelmente transmitirei esse script para colegas de trabalho que provavelmente não lerão as instruções e meu desejo de iniciá-lo e sair, gostaria de saber como transmitir uma série de respostas "padrão" / valores para ele usar. Isso pode incluir nomes de usuário / senhas / outros valores dinâmicos passados ​​na linha de comando.

-

Percebo que ter senhas em um script é um problema de segurança, mas estou disposto a ignorá-lo, particularmente no sentido mais geral de instalar pacotes que uma resposta a isso implicaria.

Tarka
fonte

Respostas:

44

Use a pré-configuração da configuração do debconf.

Faça uma instalação de teste para obter os valores que você deseja:

root@test1:~# apt-get install mysql-server

..e defina a senha root quando solicitado durante a instalação.

Então você pode verificar como são as configurações do debconf para o que você acabou de instalar (talvez seja necessário instalar debconf-utils):

root@test1:~# debconf-get-selections | grep mysql-server
mysql-server-5.5        mysql-server/root_password_again        password
mysql-server-5.5        mysql-server/root_password      password
mysql-server-5.5        mysql-server/error_setting_password     error
mysql-server-5.5        mysql-server-5.5/postrm_remove_databases        boolean false
mysql-server-5.5        mysql-server-5.5/start_on_boot  boolean true
mysql-server-5.5        mysql-server-5.5/nis_warning    note
mysql-server-5.5        mysql-server-5.5/really_downgrade       boolean false
mysql-server-5.5        mysql-server/password_mismatch  error
mysql-server-5.5        mysql-server/no_upgrade_when_using_ndb  error

Há algum barulho lá, mas a parte importante são as configurações de senha.

Em uma instalação nova, você pode evitar os prompts completamente, definindo a senha com antecedência:

root@test2:~# echo "mysql-server-5.5 mysql-server/root_password_again password Som3Passw0rd" | debconf-set-selections
root@test2:~# echo "mysql-server-5.5 mysql-server/root_password password Som3Passw0rd" | debconf-set-selections
root@test2:~# apt-get install mysql-server

Nenhuma solicitação durante essa instalação.

Shane Madden
fonte
10
sudo apt-get install debconf-utilscomo necessário.
13133 Andrew
Parece exatamente o que eu estava procurando, obrigado! Vou tentar em breve.
Tarka
Além de um erro conhecido com o phpMyAdmin que não aceita uma senha root pré-propagada do MySQL, isso funciona perfeitamente!
Tarka
11
apenas imaginando, existe uma maneira de obter possíveis configurações do debconf do sistema de pacotes sem instalar os pacotes?
stefan.at.wpf
17
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_
Michael Hampton
fonte
Você tem uma referência para o que está lendo $ DEBIAN_FRONTEND?
13133 Andrew
Isso faz parte do Debian há tanto tempo que eu acho que apenas Ian poderia realmente dizer quando foi adicionado.
Michael Hampton
11
@ Andrew É lido pelo debconf , que é o que realmente lida com as perguntas.
mgorven
@mgorven Ahh, eu não fui muito mais fundo do que o dpkg antes.
Andrew
AFAIK, esta solução permite apenas ignorar o prompt e aceitar o padrão para todas as respostas. Se você deseja definir uma resposta não padrão, precisará usar outra solução, como o debconf-set-selectionsmétodo
MestreLion 21/09