为什么dialog在Debian上不支持emacs shell?

为什么dialog在Debian上不支持emacs shell?

对话是一个从 shell 脚本提供对话框的实用程序,您可能在升级过程中在 aptitude 中看到过它们。当我使用 Emacs shell ( M-x shell) 并输入 时sudo aptitude safe-upgrade,我多次收到以下错误:

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

为什么 Dialog 不能与 Emacs shell 一起使用?我应该使用一些替代品吗?

答案1

对话框用途ncurses,这在 Emacs 中不起作用shell-mode,并且根据所以:“在 emacs shell 下工作的 ncurses 的一个好的替代品是什么?”,没有合适的替代方案ncurses可以在emacs-shell它暗示完整的终端能力其他 Emacs 模式(不幸的是我对此一无所知),也许多学期

答案2

实际上,emacs 有不止一个 shell。有一个哑的shell 不支持全屏终端应用程序,并且有“Ansi Term”,它。您甚至可以在该 shell 内运行 emacs(尽管在窗口内运行命令可能比以通常方式使用 emacs 更复杂)。

例如,下面是dialog在 GUI emacs 中运行的屏幕截图:

ansiterm / GUI 中对话框的屏幕截图

dialog在 emacs 中运行,在 xterm 中运行:

ansi-term / xterm 中对话框的屏幕截图

请记住安西术语专为特定终端描述而设计,eterm-color— 这是不是在 Debian 中ncurses-base包裹:你需要ncurses-term。类似的警告适用于将完整的终端数据库推迟到单独的包的任何系统。

进一步阅读:

至于debconf消息,谷歌是你的朋友。以下是一些相当全面的答案:

答案3

这是执行无人值守远程命令时的正常消息。只需将其放入无人值守脚本的顶部即可:

export DEBIAN_FRONTEND=noninteractive

这将告诉脚本您正在执行无人值守的脚本,以便它们知道只执行默认行为...类似但更普遍适用于将 -y 标志添加到某些 cli 输入参数

相关内容