Warum unterstützt Dialog die Emacs-Shell unter Debian nicht?

Warum unterstützt Dialog die Emacs-Shell unter Debian nicht?

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, ncursesdie 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 dialogAusführung von Emacs in einer GUI:

Screenshot des Dialogs in Ansi-Term/GUI

und dialogläuft in Emacs, läuft in xterm:

Screenshot des Dialogs in Ansi-Term / Xterm

Denk daran, dassAnsi-Begriffist für eine bestimmte Terminalbeschreibung konzipiert,eterm-color- welches istnichtim Debianncurses-basePaket: Sie benötigenncurses-termÄhnliche Vorbehalte gelten für alle Systeme, die die komplette Terminaldatenbank in einem separaten Paket bereitstellen.

Weiterführende Literatur:

Was die Nachricht betrifft debconf, ist Google Ihr Freund. Hier sind einige einigermaßen umfassende Antworten:

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

verwandte Informationen