Passando le risposte predefinite alle domande sull'installazione del pacchetto apt-get?


27

Sto provando a scrivere uno script di configurazione per i nuovi server e uno dei primi passi è installare una serie di pacchetti richiesti, come MySQL, phpMyAdmin, ecc. Usando apt-get installTuttavia, quando dpkg tenta di configurarli ti chiede un poche opzioni, come password root MySQL, password phpMyAdmin, quale server usare, ecc.

Dal momento che probabilmente passerò questo copione a colleghi che difficilmente leggeranno i messaggi e il mio desiderio di semplicemente avviarlo e andarmene, vorrei sapere come trasmettere una serie di risposte "predefinite" / valori da utilizzare. Ciò potrebbe includere nomi utente / password / altri valori dinamici passati sulla riga di comando.

-

Mi rendo conto che avere password in uno script è un problema di sicurezza, ma sono disposto a ignorarlo, in particolare nel senso più generale dell'installazione di pacchetti che una risposta a ciò implicherebbe.

Risposte:


44

Utilizzare la preconfigurazione della configurazione di debconf.

Eseguire un'installazione di prova per ottenere i valori desiderati:

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

..e imposta la password di root quando richiesto durante l'installazione.

Quindi puoi verificare l'aspetto delle impostazioni di debconf per ciò che hai appena installato (potrebbe essere necessario installarlo 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

C'è del rumore lì, ma la parte importante sono le impostazioni della password.

Quindi, per una nuova installazione, è possibile evitare completamente le istruzioni impostando in anticipo la password:

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

Nessun prompt durante l'installazione.


10
sudo apt-get install debconf-utilscome necessario.
Andrew,

Questo sembra esattamente quello che stavo cercando, grazie! Ci proverò a breve.
Tarka,

A parte un errore noto con phpMyAdmin che non accetta una password di root MySQL pre-seed, funziona perfettamente!
Tarka,

1
mi chiedo, c'è un modo per ottenere possibili impostazioni di debconf dal sistema dei pacchetti senza installare i pacchetti?
stefan.at.wpf,

17
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_

Hai un riferimento per ciò che sta leggendo $ DEBIAN_FRONTEND?
Andrew,

Questa è una parte di Debian da così tanto tempo che penso che solo Ian potesse davvero dirti quando è stato aggiunto.
Michael Hampton

1
@Andrew È letto da debconf , che è ciò che in realtà tratta le domande.
mgorven

@mgorven Ahh, non sono andato molto più in profondità di dpkg prima.
Andrew,

AFAIK, questa soluzione ti consente solo di saltare il prompt e accettare il valore predefinito per tutte le risposte. Se si desidera impostare una risposta non predefinita, è necessario utilizzare un'altra soluzione, ad esempio il debconf-set-selectionsmetodo.
MestreLion,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.