¿Pasa respuestas predeterminadas a las preguntas de instalación del paquete apt-get?

27

Estoy tratando de escribir un script de configuración para nuevos servidores, y uno de los primeros pasos es instalar una serie de paquetes requeridos, como MySQL, phpMyAdmin, etc. usando apt-get installSin embargo, cuando dpkg intenta configurarlos, le pide un pocas opciones, como la contraseña de root de MySQL, las contraseñas de phpMyAdmin, qué servidor usar, etc.

Dado que probablemente pasaré este guión a compañeros de trabajo que probablemente no leerán las instrucciones, y mi deseo de simplemente comenzarlo y alejarme, me gustaría saber cómo pasar una serie de respuestas "predeterminadas" / valores para su uso. Esto puede incluir nombres de usuario / contraseñas / otros valores dinámicos pasados ​​en la línea de comandos.

-

Me doy cuenta de que tener contraseñas en un script es un problema de seguridad, pero estoy dispuesto a ignorarlo, particularmente en el sentido más general de instalar paquetes que implicaría una respuesta a esto.

Tarka
fuente

Respuestas:

44

Utilice la configuración previa de debconf.

Realice una instalación de prueba para obtener los valores que desea:

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

... y establezca la contraseña de root cuando se le solicite durante la instalación.

Luego puede verificar cómo se ve la configuración de debconf para lo que acaba de instalar (puede que necesite 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

Hay algo de ruido allí, pero la parte importante es la configuración de la contraseña.

Luego, para una instalación nueva, puede evitar las indicaciones por completo configurando la contraseña de antemano:

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

No hay avisos en absoluto durante esa instalación.

Shane Madden
fuente
10
sudo apt-get install debconf-utilssegún sea necesario.
Andrew
Esto se ve exactamente como lo que estaba buscando, ¡gracias! Lo intentaré en breve.
Tarka
Además de un error conocido con phpMyAdmin que no acepta una contraseña raíz MySQL pre-sembrada, ¡esto funciona perfectamente!
Tarka
1
Solo me pregunto, ¿hay alguna forma de obtener posibles configuraciones de debconf del sistema de paquetes sin instalar los paquetes?
stefan.at.wpf
17
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_
Michael Hampton
fuente
¿Tiene una referencia de lo que está leyendo $ DEBIAN_FRONTEND?
Andrew
Esto ha sido parte de Debian durante tanto tiempo que creo que solo Ian realmente podría decirte cuándo se agregó.
Michael Hampton
1
@Andrew Es leído por debconf , que es lo que realmente trata las preguntas.
mgorven
@mgorven Ahh, no he ido mucho más profundo que dpkg antes.
Andrew
AFAIK, esta solución solo le permite omitir el mensaje y aceptar el valor predeterminado para todas las respuestas. Si desea establecer una respuesta no predeterminada, debe usar otra solución, como el debconf-set-selectionsmétodo.
MestreLion