
ダイアログは、シェル スクリプトからダイアログ ボックスを提供するユーティリティです。アップグレード中に aptitude で見たことがあるかもしれません。Emacs シェル ( 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 シェルで動作しないのでしょうか? 代替手段を使用する必要がありますか?
答え1
ダイアログの使用ncurses
はEmacsのでは動作せずshell-mode
、それで:「emacs シェルで動作する ncurses の優れた代替手段は何でしょうか?」ncurses
、に代わる適切な方法はありませんemacs-shell
。しかしそれは示唆する完全な端末機能他のEmacsのモード(残念ながら私はそれについて何も知らない)については、おそらく複数期間?
答え2
実は、Emacsには複数のシェルがあります。バカフルスクリーンのターミナルアプリケーションをサポートしていないシェルと、「Ansi Term」があります。するシェル内で emacs を実行することもできます (ただし、ウィンドウ内でコマンドを実行するのは、通常の方法で emacs を使用するよりも複雑になる可能性があります)。
たとえば、dialog
GUI emacs で実行しているスクリーンショットを次に示します。
そして、dialog
emacsで実行し、xtermで実行します:
それを念頭に置いてANSI用語特定の端末記述用に設計されており、eterm-color
—それはないデビアンncurses-base
パッケージ: 必要なものncurses-term
完全な端末データベースを別のパッケージに委ねるシステムにも同様の注意事項が適用されます。
参考文献:
- アンシターム(Emacs ウィキ)
- 用語ヒント(Emacs ウィキ)
- Emacs: Emacs でシェルを実行する(Xah Lee 著)
メッセージに関してはdebconf
、Google があなたの味方です。ここに、かなり包括的な回答をいくつか示します。
- フロントエンドを初期化できません: ssh 使用時のダイアログ(Ubuntuに質問)
答え3
これは、無人リモート コマンドを実行するときの通常のメッセージです。これを無人スクリプトの先頭に追加するだけです。
export DEBIAN_FRONTEND=noninteractive
これにより、スクリプトに無人スクリプトを実行していることが通知され、スクリプトはデフォルトの動作を実行するだけで済みます。これは、一部の CLI 入力パラメータに -y フラグを追加することに似ていますが、より一般的に適用できます。