Konsolen-Setup führt dazu, dass apt-get update nicht mehr reagiert

814
erich

Ich möchte apache2 beim ersten Laden automatisch auf meiner EC2-Instanz installieren. Ich verwende das Basis-Ubuntu 16.04 LTS-Image:

ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-20180522 (ami-a4dc46db) 

Mein Benutzerdatenskript ist unten:

#!/bin/bash apt-get update && apt-get upgrade -y apt-get install apache2 -y 

Beim Einloggen und sehr geduldigem Warten stellte ich fest, dass der Apache2 nicht installiert wurde. Da dieses Skript als root ausgeführt wird, konnte ich die Ausgabe nicht so sehen, als würde ich sie manuell ausführen. Daher habe ich alle Ausgaben in eine Protokolldatei umgeleitet.

#!/bin/bash apt-get update && apt-get upgrade -y &>/var/log/erich 

Hier ist der Teil, der auf Benutzereingaben wartet:

Setting up console-setup (1.108ubuntu15.4) ... 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 console-setup -------------------------   1. ARMSCII-8 8. ISIRI-3342 15. ISO-8859-16 22. ISO-8859-8 2. CP1251 9. ISO-8859-1 16. ISO-8859-2 23. ISO-8859-9 3. CP1255 10. ISO-8859-10 17. ISO-8859-3 24. KOI8-R 4. CP1256 11. ISO-8859-11 18. ISO-8859-4 25. KOI8-U 5. GEORGIAN-ACADEMY 12. ISO-8859-13 19. ISO-8859-5 26. TIS-620 6. GEORGIAN-PS 13. ISO-8859-14 20. ISO-8859-6 27. UTF-8 7. IBM1133 14. ISO-8859-15 21. ISO-8859-7 28. VISCII  Encoding to use on the console: 

Ich kann apt-mark holddieses Paket als Stop-gap-Maß nehmen, aber das ist keine Lösung. Wie kann ich den Standard-Codierungstyp einstellen?

0

2 Antworten auf die Frage

2
erich

Einige der Debconf-Fehler, die mein Skript durchläuft, wurden gegoogelt. Andere beantwortete Fragen scheinen alle das Gleiche zu haben - die Remote-Ausführung über SSH. Dies scheint auch die Methode von Amazon zu sein, Benutzerdatenskripts auszuführen, wenn Instanzen bereitgestellt werden.

Diese SSH-Verbindungen haben offenbar keinen Zugriff auf bestimmte Umgebungsvariablen oder Standardkonfigurationsdaten. Durch das explizite Festlegen dieser Verbindungen können Fehler reduziert werden. Wenn Sie die DEBCONF_FRONTEND=noninteractiveUmgebungsvariable wie hier und zu anderen Fragen vorgeschlagen einstellen, ist dies in diesem Fall nicht der Trick.

Ich konnte die Standardcodierung für das Konsolen-Setup-Paket festlegen (was dazu führte, dass mein Skript nicht mehr reagiert), indem debconf-set-selectionsdie Konfigurationsdatenbank vor dem ersten Aufruf aktualisiert wurde apt-get. Es wird eine Datei als Argument benötigt, sodass die Konfigurationszeile in eine temporäre Datei geschrieben und anschließend gelöscht werden kann:

echo "console-setup console-setup/charmap47 select UTF-8" > encoding.conf debconf-set-selections encoding.conf rm encoding.conf apt-get update && apt-get upgrade -y 

Darüber hinaus konnte ich viele der Debconf-Warnungen unterdrücken, indem ich export TERM=xtermsie oben im Skript hinzufügte .

1
Federico Bertola

Sie sollen die folgenden Umgebungsvariable am Anfang des Skripts gesetzt: export DEBCONF_FRONTEND=noninteractive; Weitere Informationen finden Sie im Handbuch (siehe http://manpages.ubuntu.com/manpages/artful/man7/debconf.7.html ). Um wirklich sicher zu sein, fügen Sie den -qqSchalter zu hinzu apt-get.

Achten Sie darauf, dass ich sie benutze, exportda sie die Umgebungsvariable an die aktuelle und die untergeordneten Variablen weitergibt (im Gegensatz zur VAR=VALUENotation). Dies ist notwendig, da apt-getandere Prozesse zur Konfiguration der Pakete generiert werden.

Dies ist ein Auszug aus der Bash-Manpage:

export [-fn] [name [= word]] ... export -p Die angegebenen Namen werden für den automatischen Export in die Umgebung der nachfolgend ausgeführten Befehle markiert. Wenn die Option -f angegeben ist, beziehen sich die Namen auf Funktionen ...

Hoffe das hilft!

Ich habe das an der Spitze des Skripts hinzugefügt, aber `apt-get -qq install console-setup` scheint diese Anweisung immer noch zu ignorieren. erich vor 5 Jahren 1