
對話是一個從 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 輸入參數