Übergeben Sie Standardantworten auf Fragen zur Installation von apt-get-Paketen?

27

Ich versuche , ein Konfigurationsskript für neuen Server zu schreiben, und einer der ersten Schritte ist es, eine Reihe von erforderlichen Paketen zu installieren, wie MySQL, phpMyAdmin, usw. verwenden apt-get installWenn jedoch dpkg versucht , sie zu konfigurieren , werden Sie gefragt, für ein Einige Optionen, wie z. B. das MySQL-Root-Passwort, phpMyAdmin-Passwörter, der zu verwendende Server usw.

Da ich dieses Skript wahrscheinlich an Kollegen weitergeben werde, die die Eingabeaufforderungen wahrscheinlich nicht lesen, und mein Wunsch, es einfach zu starten und wegzugehen, würde ich gerne wissen, wie ich eine Reihe von "Standard" -Antworten weitergebe. Werte, die verwendet werden sollen. Dies kann Benutzernamen / Kennwörter / andere dynamische Werte umfassen, die über die Befehlszeile übergeben werden.

-

Mir ist klar, dass Kennwörter in einem Skript ein Sicherheitsproblem darstellen, aber ich bin bereit, es zu ignorieren, insbesondere im allgemeinen Sinne der Installation von Paketen, die eine Antwort darauf implizieren würde.

Tarka
quelle

Antworten:

44

Verwenden Sie die Konfigurationsvoreinstellung von debconf.

Führen Sie eine Testinstallation durch, um die gewünschten Werte zu erhalten:

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

..und legen Sie das root-Passwort fest, wenn Sie während der Installation dazu aufgefordert werden.

Dann können Sie überprüfen, wie die Debconf-Einstellungen für das aussehen, was Sie gerade installiert haben (möglicherweise müssen Sie installieren 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

Es gibt einige Geräusche, aber der wichtige Teil sind die Passworteinstellungen.

Bei einer Neuinstallation können Sie die Eingabeaufforderungen vollständig vermeiden, indem Sie das Kennwort im Voraus festlegen:

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

Während dieser Installation werden keine Eingabeaufforderungen angezeigt.

Shane Madden
quelle
10
sudo apt-get install debconf-utilswie nötig.
Andrew
Das sieht genau so aus, wie ich gesucht habe, danke! Ich werde es gleich versuchen.
Tarka
Abgesehen von einem bekannten Fehler, bei dem phpMyAdmin kein vorinstalliertes MySQL-Root-Passwort akzeptiert, funktioniert dies perfekt!
Tarka,
1
Ich frage mich nur, gibt es eine Möglichkeit, mögliche Debconf-Einstellungen aus dem Paketsystem zu erhalten, ohne die Pakete zu installieren?
stefan.at.wpf
17
export DEBIAN_FRONTEND=noninteractive
apt-get -q -y install _packages_
Michael Hampton
quelle
Haben Sie eine Referenz für $ DEBIAN_FRONTEND?
Andrew
Dies war so lange ein Teil von Debian, dass ich denke, nur Ian konnte Ihnen wirklich sagen, wann es hinzugefügt wurde.
Michael Hampton
1
@ Andrew Es wird von debconf gelesen , was eigentlich mit den Fragen zu tun hat .
mgorven
@mgorven Ahh, ich bin noch nie viel tiefer gegangen als dpkg.
Andrew
AFAIK, mit dieser Lösung können Sie nur die Eingabeaufforderung überspringen und die Standardeinstellung für alle Antworten akzeptieren. Wenn Sie eine nicht standardmäßige Antwort festlegen möchten, müssen Sie eine andere Lösung verwenden, z. B. die debconf-set-selectionsMethode.
MestreLion