Wie kann die Einrichtung des Pakets "Tastaturkonfiguration" automatisiert werden?

13

Ich schreibe ein Skript, um den Ubuntu 16.04-Server mithilfe von Debootstrap (auf einem Ubuntu 16.04-Server) in einem Chroot-Gefängnis zu installieren.

Während der Einrichtung des keyboard-configurationPakets werden Sie nach dem Tastaturtyp gefragt:

Setting up keyboard-configuration (1.108ubuntu15) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Configuring keyboard-configuration
----------------------------------

The layout of keyboards varies per country, with some countries having multiple
common layouts. Please select the country of origin for the keyboard of this
computer.

  1. Afghani                                     48. Irish
  2. Albanian                                    49. Italian
...    
  28. English (UK)                               75. Slovak
  29. English (US)                               76. Slovenian
...
  45. Icelandic                                  92. Vietnamese
  46. Indian                                     93. Wolof
  47. Iraqi
Country of origin for the keyboard: 

Ich möchte dies automatisieren, damit es nicht fragt und einfach mit der Installation fortfährt.

Wie kann ich das machen?

Fadedbee
quelle
Verwandte: stackoverflow.com/questions/38165407/…
Ciro Santilli 事件 改造 中心 法轮功 六四 事件

Antworten:

13

Aus einer ähnlichen StackOverflow-Frage:

Wenn die ENV-Variable DEBIAN_FRONTEND=noninteractivewährend der Ausführung festgelegt wird apt-get install keyboard-configuration, wird keine Interaktion angefordert. Sie können also einfach ausführen:

DEBIAN_FRONTEND=noninteractive apt-get install keyboard-configuration
Nicu Stiurca
quelle
2

Sie könnten verwenden xdotool. Beim Starten des Skripts setzen & sleep <however long it takes to get to that point> && xdotool type <number you want to put> && xdotool key Return.

Ich habe dies nicht getestet, aber es sollte funktionieren.

Antwort 2:

Führen Sie den Befehl aus, wobei die Ausgabe jedoch in eine Datei ( > testfile) umgeleitet wird .

Öffnen Sie ein anderes Terminal und führen Sie es aus

while true
do 
    if [ "$(tac testfile | grep -m 1 .)" = "Country of origin for the keyboard" ]
    then 
    xdotool type <number you want to put> && xdotool key Return && break
    fi
done  

Klicken Sie dann wieder auf das erste Terminal.

Antwort 3:

Ich denke, alles, was Sie tun müssen, ist, die gewünschte Nummer in eine Datei testfilezu < testfileschreiben und den Befehl mit angehängten auszuführen .

Feldspat15523
quelle
Vielen Dank, interessante Idee, aber es würde entweder viel Zeit verschwenden oder gelegentlich einfrieren, wenn die Installation länger als erwartet dauerte, abhängig von der verwendeten Schlafdauer.
Fadedbee
Lesen Sie die Manpage von xdotool - es scheint eine X-Windows-Sache zu sein. Ich versuche dies in einer Ubuntu-Serverumgebung. Ich werde meine Frage aktualisieren.
Fadedbee
2

Dies ist einfach zu automatisieren. Sie müssen lediglich die richtige Debconf-Konfiguration für dieses Paket festlegen.

Erste Installation debconf-utils:

sudo apt install debconf-utils

Wenn Sie das Paket bereits konfiguriert haben, können Sie die Debconf-Konfiguration lesen mit:

debconf-get-selections | grep keyboard-configuration

Wenn Sie das Paket nicht konfiguriert haben oder Ihre Auswahl ändern möchten, können Sie dies tun mit:

dpkg-reconfigure keyboard-configuration

Exportieren Sie Ihre Auswahl in eine Datei

debconf-get-selections | grep keyboard-configuration > selections.conf

Kopieren Sie selections.confauf den Zielcomputer und stellen Sie die Auswahl ein:

debconf-set-selections < selections.conf

Wenn Sie das Paket installieren oder neu konfigurieren, werden Ihre Auswahlmöglichkeiten automatisch ausgewählt.

dpkg-reconfigure keyboard-configuration -f noninteractive
Josh Enders
quelle
1

"Debootstrap ist wirklich nur ein Shell-Skript" - von https://wiki.debian.org/Debootstrap

Dies bedeutet, dass Sie das Skript lesen können, um festzustellen, ob es Möglichkeiten gibt, die Informationen über eine Umgebungsvariable zu übergeben, beim Aufrufen von Deboostrap ein Argument anzugeben oder eine eigene geänderte Version für Ihre spezifische Anwendung zu erstellen.

BenjaminBrink
quelle
Dieses Paket wird im Rahmen eines apt-get install ....Laufs nach dem ersten Debootstrap installiert.
Fadedbee
Sie sagen also, dass nach apt-get install deboostrapIhrer Installation das Paradigma das Ändern von Umgebungsvariablen oder das Ausführen eines benutzerdefinierten Skripts nicht zulässt? Okay.
BenjaminBrink
Vielleicht hilft das. Dieser Link zeigt ein Beispiel für das Einrichten einer "Preeseed" -Datei, um Eingabeaufforderungen
BenjaminBrink