Ich möchte einige Paketinstallationen über ein Bash-Skript automatisieren. Sie werden in einem bereits bestehenden chroot-Dateisystem installiert. Einige der Pakete beinhalten jedoch interaktive Benutzereingaben (d. h. ddclient fragt nach einem dynamischen DNS-Dienstanbieter), die ich nicht so einfach automatisieren konnte.
debconf-Preseeding scheint der gebräuchlichste Weg zu sein, um interaktive Paketinstallationen zu automatisieren, aber alle Beispiele, die ich gelesen habe, deuten darauf hin, dass es sich um eine gesamte Debian-Installation handelt und nicht nur um einzelne Pakete.
Ich habe diese Anleitung zur Automatisierung interaktiver Debian-Paketinstallationen verfolgt, aber sie erklärt nicht wirklich die Einzelheiten.
Vielen Dank im Voraus!
Akzeptierte Antwort:
Abgesehen von der Verwendung eines „richtigen“ Bereitstellungs- und Konfigurationsverwaltungstools wie Ansible oder Salt, debconf
Preseeding kann vollkommen ausreichend sein, um Debian-Pakete vorzukonfigurieren. Es ist keineswegs auf ausgewachsene Installationen beschränkt; es kann auf beliebig viele Pakete angewendet werden.
Der einfachste Weg, damit anzufangen, besteht darin, die Pakete, die Sie installieren möchten, manuell zu konfigurieren, indem Sie das Paket installieren und die Fragen beantworten. Führen Sie dann debconf-get-selections
aus (aus den debconf-utils
Paket); Das listet alle gespeicherten Einstellungen auf, einschließlich der für die gerade installierten Pakete, zusammen mit dem Fragetext in den Kommentaren – damit Sie die Fragen, die Sie voreinstellen möchten, leicht finden können. Das Format ist
<package> <debconf key> <type> <value>
Zum Beispiel
# System's default paper size:
# Choices: letter, a4, note, legal, executive, halfletter, halfexecutive, 11x17, statement, folio, quarto, 10x14, ledger, tabloid, a0, a1, a2, a3, a5, a6, a7, a8, a9, a10, b0, b1, b2, b3, b4, b5, c5, DL, Comm10, Monarch, archE, archD, archC, archB, archA, flsa, flse, csheet, dsheet, esheet
libpaper1 libpaper/defaultpaper select a4
Speichern Sie die Einstellungen, die Sie voreinstellen möchten, in einer Datei und führen Sie dann debconf-set-selections
aus (in der debconf
package) auf dem Zielsystem, entweder mit der lokal verfügbaren und benannten Datei als erstes Argument, oder deren Inhalt per Pipe:
cat preseed-file | ssh remotehost debconf-set-selections
Tun Sie dies vorher Installieren der Pakete auf dem Zielsystem.