对话是一个从 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 中运行的屏幕截图:
并dialog
在 emacs 中运行,在 xterm 中运行:
请记住安西术语专为特定终端描述而设计,eterm-color
— 这是不是在 Debian 中ncurses-base
包裹:你需要ncurses-term
。类似的警告适用于将完整的终端数据库推迟到单独的包的任何系统。
进一步阅读:
- 安西术语(Emacs 维基)
- AnsiTerm 提示(Emacs 维基)
- Emacs:在 Emacs 中运行 Shell(李霞摄)
至于debconf
消息,谷歌是你的朋友。以下是一些相当全面的答案:
- 使用 ssh 时无法初始化前端:对话框(问Ubuntu)
答案3
这是执行无人值守远程命令时的正常消息。只需将其放入无人值守脚本的顶部即可:
export DEBIAN_FRONTEND=noninteractive
这将告诉脚本您正在执行无人值守的脚本,以便它们知道只执行默认行为...类似但更普遍适用于将 -y 标志添加到某些 cli 输入参数