
Dialogist ein Dienstprogramm, das Dialogfelder aus Shell-Skripten bereitstellt. Sie haben sie möglicherweise bei Upgrades in aptitude gesehen. Wenn ich die Emacs-Shell ( M-x shell
) verwende und eingebe sudo aptitude safe-upgrade
, erhalte ich mehrmals den folgenden Fehler:
debconf: unable to initialize frontend: Dialog
debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.)
debconf: falling back to frontend: Readline
Warum funktioniert Dialog nicht mit der Emacs-Shell? Und sollte ich einen Ersatz verwenden?
Antwort1
Dialog verwendetncurses
, was in Emacs nicht funktioniert shell-mode
, und lautALSO:„Was wäre eine gute Alternative zu Ncurses, die unter der Emacs-Shell funktioniert?“, es gibt keine geeignete Alternative dazu, ncurses
die funktionieren würde emacs-shell
,Aberes deutet darauf hinvollständige Terminalfunktionenanderer Emacs-Modi (von denen ich leider nichts weiß), vielleichtMehrere Laufzeiten?
Antwort2
Tatsächlich hat Emacs mehr als eine Shell. Es gibt einedummShell, die keine Vollbild-Terminalanwendungen unterstützt, und es gibt den "Ansi Term", dertut. Sie könnten Emacs sogar innerhalb dieser Shell ausführen (obwohl das Ausführen von Befehlen innerhalb des Fensters komplizierter sein könnte, als Emacs auf die übliche Weise zu verwenden).
Hier ist beispielsweise ein Screenshot der dialog
Ausführung von Emacs in einer GUI:
und dialog
läuft in Emacs, läuft in xterm:
Denk daran, dassAnsi-Begriffist für eine bestimmte Terminalbeschreibung konzipiert,eterm-color
- welches istnichtim Debianncurses-base
Paket: Sie benötigenncurses-term
Ähnliche Vorbehalte gelten für alle Systeme, die die komplette Terminaldatenbank in einem separaten Paket bereitstellen.
Weiterführende Literatur:
- AnsiTerm(Emacs-Wiki)
- AnsiTermHints(Emacs-Wiki)
- Emacs: Shell in Emacs ausführen(Von Xah Lee)
Was die Nachricht betrifft debconf
, ist Google Ihr Freund. Hier sind einige einigermaßen umfassende Antworten:
- Frontend kann nicht initialisiert werden: Dialog bei Verwendung von SSH(Fragen Sie Ubuntu)
Antwort3
Dies ist eine normale Meldung bei der Ausführung unbeaufsichtigter Remote-Befehle. Fügen Sie dies einfach oben in Ihr unbeaufsichtigtes Skript ein:
export DEBIAN_FRONTEND=noninteractive
Dadurch wird den Skripten mitgeteilt, dass Sie ein unbeaufsichtigtes Skript ausführen, sodass sie wissen, dass sie einfach das Standardverhalten ausführen sollen ... ähnlich, aber allgemeiner anwendbar wie das Hinzufügen des Flags -y zu einigen CLI-Eingabeparametern