2014-04-29 6 views
9

Sto configurando uno script bash per automatizzare la creazione di un ambiente LAMP.preconfigurare una password vuota per mysql tramite debconf-set-selezioni

Sto usando debconf-set-selections per impostare le opzioni prima di installare mysql, phpmyadmin, ecc ...

E funziona soprattutto grande. Ma il problema è che ho devo impostare una password vuota per MySQL e chiede ancora la password in fase di installazione anche con le linee digitate prima:

echo "mysql-server-5.5 mysql-server/root_password password" | debconf-set-selections 
echo "mysql-server-5.5 mysql-server/root_password_again password" | debconf-set-selections 

risposta

8

EDIT:This answer below suggerisce una possibile soluzione che potrebbe funzionare per Ubuntu 15.10, ma non è riuscito per me su Ubuntu 14.04.


Al momento è impossibile impostare direttamente una password vuota per mysql-server durante il processo di installazione usando debconf-set-selections, ma ci sono modi per aggirare questo problema e forzare una password vuota comunque.


L'approccio diretto di preconfigurazione la password per la stringa vuota fallisce perché:

  1. Lo script config che legge la password dal database imposta immediatamente il suo seen bandiera per false una volta che rileva la password è impostato sulla stringa vuota:

    db_input high mysql-server/root_password || true 
    db_go 
    db_get mysql-server/root_password 
    # if password isn't empty we ask for password verification 
    if [ -z "$RET" ]; then 
        db_fset mysql-server/root_password seen false 
        db_fset mysql-server/root_password_again seen false 
        break 
    fi 
    
  2. ilLo scriptviene eseguito più volte durante il processo di installazione.

Così, preconfigurazione la password per la stringa vuota incide solo la prima esecuzione dello script config, poiché il flag seen è impostato true in quel punto nel tempo, mentre ulteriori invocazioni dello stesso script visualizzano la domanda all'utente, poiché il valore del flag seen era già impostato su false quando sono stati eseguiti.


Tuttavia, è possibile evitare che debconf dal fare domande del tutto con altri mezzi, ma questi metodi si applicano a tutte le domande, piuttosto che solo quelli relative alle password.Ad esempio, una delle seguenti sarebbe lasciare vuota la password:

  • Set debconf 'frontend s per noninteractive:

    DEBIAN_FRONTEND=noninteractive apt-get install [-y] [-q] mysql-server 
    
  • Set debconf' livello di priorità s per critical:

    DEBIAN_PRIORITY=critical apt-get install [-y] [-q] mysql-server 
    

    Questo è probabilmente preferibile in quanto consente la visualizzazione di messaggi critici.

+1

Questa era l'unica risposta che ha funzionato per me – ognockocaten

+0

Ho dimenticato di aver fatto questa domanda. Un anno fa, l'ho risolto con il metodo "DEBIAN_FRONTEND = noninteractive" e da allora sono soddisfatto. – piroux

0

Prova in realtà l'aggiunta di un argomento vuoto

echo mysql-server-5.5 mysql-server/root_password password "" | debconf-set-selections 
echo mysql-server-5.5 mysql-server/root_password_again password "" | debconf-set-selections 
3

Credo che il problema è che a destra prima di 'password' è necessario aggiungere la parola 'stringa' come questo:

echo "mysql-server-5.5 mysql-server/root_password string password" | debconf-set-selections 

b tw questo fa la stessa cosa, ma penso che il suo fresco:

debconf-set-selections <<< "mysql-server-5.5 mysql-server/root_password string password" 
8

Attualmente, si è possibile fare questo, ma è un po 'difficile.

È necessario impostare in modo esplicito citazioni per marcare una password vuota, in questo modo:

sudo debconf-set-selections <<< "mysql-server mysql-server/root_password password \"''\"" 

appena testato su Ubuntu 15.10, funziona come un fascino.