Ü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.

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.


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_

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.