Die Lösung von Alex unterdrückt Fehler, und er hat fast die Ursache richtig verstanden, aber es erlaubt Ihnen nicht, Fragen zu beantworten (was in Ordnung ist, wenn Sie die Antworten vorher eingegeben haben und aus einem Skript ausgeführt werden, aber sehr ärgerlich, wenn Sie neue Pakete ausprobieren ). Das Kernproblem ist eine Wechselwirkung zwischen den Annahmen, die von den verschiedenen Frontends von ssh und debconf getroffen wurden.
Beginnen wir mit ssh. ssh geht davon aus, dass Sie, wenn Sie keinen Remote-Befehl angeben, eine Pty auf der Remote-Seite wünschen und dass Sie eine Remote angeben, die Sie nicht möchten (was in 90% der Fälle bemerkenswert gut funktioniert, nur nicht diese). Dies kann durch die -t
Option, die ein Pty erzwingt, oder durch die -T
Option, die kein Pty erzwingt, (oder durch die entsprechenden Optionen der Konfigurationsdatei) außer Kraft gesetzt werden . Außerdem wird bei Verwendung eines Pty die TERM
Umgebungsvariable kopiert (Ausnahmen können in der Dokumentation für vollständige Details und das offizielle Gewinnspiel- Anmeldeformular enthalten sein ). Beachten Sie auch, dass die -x
Option die X11-Weiterleitung deaktiviert und -X
aktiviert.
Debconf selbst hat keine Interaktivitätsanforderungen (von Entwurf), aber die verschiedenen Frontends haben unterschiedliche Anforderungen.
Ich glaube, das am besten aussehende Frontend ist Gnome (es gibt auch ein ked-Frontend, das ich nicht zum Arbeiten gebracht habe). Für das Gnome-Frontend (und auch für das KDE-Frontend) sind einige nicht standardmäßige Bibliotheken und ein X11-Server erforderlich. Daher müsste die Befehlszeile das Gnome-Frontend erzwingen (sobald die entsprechenden Bibliotheken installiert sind)
ssh -X <remote_srv> "DEBIAN_FRONTEND=gnome apt-get autoremove"
oder wenn du lieber kde
ssh -X <remote_srv> "DEBIAN_FRONTEND=kde apt-get autoremove"
Das Dialog-Frontend (die Standardeinstellung) erfordert ein Pty und ein Terminal mit einem Mindestfunktionalitätsniveau, das in der TERM-Variablen angegeben ist (in der Praxis ist dies alles, was eine vollständige terminfo-Beschreibung außer dumm enthält).
ssh -t <remote_srv> "TERM=$TERM DEBIAN_FRONTEND=dialog apt-get autoremove"
oder
ssh -t <remote_srv> "apt-get autoremove"
Das Readline-Frontend hat weniger strenge Anforderungen und funktioniert mit dummen Terminals, benötigt aber eine Pty.
ssh -t <remote_srv> "DEBIAN_FRONTEND=readline apt-get autoremove"
Das Editor-Frontend hängt von einem Editor ab, an den je nach Editor spezielle Anforderungen gestellt werden.
ssh -t <remote_srv> "DEBIAN_FRONTEND=editor EDITOR=vi apt-get autoremove"
ssh -X <remote_srv> "DEBIAN_FRONTEND=editor EDITOR=gvim\ -f apt-get autoremove"
Das nicht interaktive Frontend hat keine Anforderungen, stellt jedoch keine Fragen (die möglicherweise nicht Ihren Wünschen entsprechen).
ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"