Ich möchte das Ubuntu-Paket über dpkg-reconfigure mit allen Werten konfigurieren, die über den nicht interaktiven Modus (im Skript) bereitgestellt werden.
Tatsächlich handelt es sich bei meinem Fall um die Konfiguration von Firebird ( http://www.firebirdsql.org/manual/ubusetup.html ).
sudo dpkg-reconfigure firebird2.5-superclassic -freadline
fragt mich nach den 2 Werten, bei denen die Antworten "Y" und "newpwd" lauten.
Die Beispielausgabe sieht folgendermaßen aus:
sudo dpkg-reconfigure firebird2.5-superclassic -freadline
* Firebird 2.5 superclassic server not running
Configuring firebird2.5-superclassic
------------------------------------
Accept if you want Firebird server to start automatically.
If you only need the Firebird client and there are no databases that will be served by this host, decline.
Enable Firebird server? Y
Password for firebird 2.5
-------------------------
Firebird has a special user named SYSDBA, which is the user that has access to all databases. SYSDBA can also create new databases and users. Because of this, it
is necessary to secure SYSDBA with a password.
The password is stored in /etc/firebird/2.5/SYSDBA.password (readable only by root). You may modify it there (don't forget to update the security database too,
using the gsec utility), or you may use dpkg-reconfigure to update both.
To keep your existing password, leave this blank.
Password for SYSDBA:
* Starting Firebird 2.5 superclassic server...
...done.
* Firebird 2.5 superclassic server already running
Ich habe es here strings
über ein Bash-Skript wie folgt versucht :
sudo dpkg-reconfigure firebird2.5-superclassic -f readline << EOF
Y
newpwd
EOF
Dies funktionierte jedoch aus irgendeinem Grund nicht und verlangte die Angabe der Werte.
Irgendwelche Ideen, wie man die erforderlichen Werte zum Skript füttert?
Debian-Pakete verwenden debconf , um Einstellungen für die Installationszeit zu sammeln. Debconf unterstützt mehrere Frontends, um den Benutzer zur Eingabe von Werten aufzufordern. Die
-f
Option zumdpkg-reconfigure
Auswählen des zu verwendenden Debconf-Frontends.Das
readline
Frontend ist für die interaktive Nutzung konzipiert. Verwenden Sie es nicht in einem automatischen Skript.Wenn die Standardwerte in Ordnung sind, verwenden Sie einfach das
noninteractive
Frontend.Wenn Sie unterschiedliche Werte angeben möchten, haben Sie zwei Möglichkeiten. Sie können sich an das
noninteractive
Frontend halten und die Debconf-Datenbank voreinstellen . Der einfachste Weg, dies zu tun, besteht darin, das Paket auf einer Maschine zu installieren und interaktiv zu konfigurieren, dann die relevanten Teile daraus zu extrahieren/var/cache/debconf/config.dat
und diese Datei an debconf zu liefern:Eine andere Methode ist es, das zu verwenden ,
editor
Frontend und die UmgebungsvariableVISUAL
(oderEDITOR
, sondernVISUAL
hat Vorrang vor ,EDITOR
wenn es gesetzt ist) zu einem Programm , das eine Datei mit den aktuellen Einstellungen als Argument enthält , nimmt, und überschreibt die Datei mit den Einstellungen , die Sie möchten.quelle
/var/cache/debconf/config.dat
selbst zu analysieren . Sie könnendebconf-get-selections
aus demdebconf-utils
Paket verwenden. Siehe dies zum Beispiel.dpkg-reconfigure
, was das OP wohl automatisieren möchte, weil er es häufig machen wird.debconf-get-selections
dürfte hier von Nutzen sein. Wenn Peter dies oft mit unterschiedlichen Werten tun möchte, sollte erconfig.dat
dynamisch generieren (es ist ein einfaches Format). Das ist einfacher alsexpect
.expect
ist der Weg der Verzweiflung. Zum Beispiel bricht es zusammen, wenn eine neue Version des Pakets eine neue Frage einführt (oder Sie benötigen ein weitaus ausgefeilteres Skript).Verwenden Sie den
debconf-set-selections
Befehl, um neue Werte in die debconf-Datenbank einzufügen (/var/cache/debconf/config.dat
).Die Antwort von Eli war für mich nicht klar, deshalb erkläre ich es Schritt für Schritt.
Das erste, was Sie tun müssen, ist, das Paket interaktiv zu installieren und die gewählte Auswahl zu erhalten (ändern
firebird
Sie den Namen Ihres Pakets):oder:
Dann bereiten Sie die Debconf-Datenbank mit Antworten vor
debconf-set-selections
, zum Beispiel durch:wo Syntax ist:
Hier ist ein weiteres Beispiel für ein
ttf-mscorefonts-installer
Paket:Hinweis: Die Eingabeauswahl kann entweder in der Standardeingabe oder in der Datei erfolgen.
Überprüfen Sie:
man debconf-set-selections
für weitere Informationen.Alternativ können Sie Kickstart verwenden .
quelle
Ich habe ungefähr eine Stunde lang herumgestöbert und versucht, die Lösung dafür auf einen Einzeiler zu reduzieren. Endlich habe ich sie gefunden: debconf-set-selections
Dadurch wird debconf gezwungen, die Standardeinstellungen zu verwenden und Sie nicht zu nerven. Sie können auch die Konfigurationsstandards für jedes Debian-Paket festlegen. Weitere Informationen finden Sie in der Manpage .
quelle
sudo dpkg-reconfigure debconf -f noninteractive
oderexport DEBIAN_FRONTEND=noninteractive
?Ich habe versucht, die LDAP-Einstellungen (ldap-auth-config package) mithilfe der oben genannten Methode debconf-get-selections / set-selections per Skript zu rekonfigurieren. Dabei wurde festgestellt, dass dieses Paket die Einstellungen in debconf nach der Erstinstallation ignoriert. Sie können debconf verwenden, um vor der Installation einen Pre-Seed durchzuführen. Nach der Installation überschreibt ldap-auth-config Ihre debconf-Einstellungen jedoch lieber mit den Einstellungen, die in den von ihm verwalteten Systemkonfigurationsdateien festgelegt sind. Das Paket pam-auth-config hat das gleiche Verhalten.
Der EDITOR / VISUAL-Mechanismus ist in diesem Fall ebenfalls schwierig zu verwenden, da ldap-auth-config ihn für verschiedene Fragensätze mehrmals aufruft. Dies kann mit einem Expect-Skript oder durch direktes Ändern der Systemkonfigurationsdateien einfacher erledigt werden. Es ist also nicht immer einfach, einen Rückfall zu vermeiden!
quelle