
Диалогэто утилита, которая предоставляет диалоговые окна из скриптов оболочки, вы могли видеть их в 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
, и согласноТАК:«Какая альтернатива ncurses будет работать в оболочке emacs?», нет подходящей альтернативы, ncurses
которая бы работала в emacs-shell
,ноэто намекает наполные возможности терминаладругих режимов Emacs (о которых я, к сожалению, ничего не знаю), возможноМноготерминовый?
решение2
На самом деле, у emacs есть не одна оболочка.тупойоболочка, которая не поддерживает полноэкранные терминальные приложения, и есть "Ansi Term", котораяделает. Вы даже можете запустить emacs внутри этой оболочки (хотя запуск команд внутри окна может оказаться сложнее, чем использование emacs обычным способом).
Например, вот скриншот dialog
запуска Emacs в графическом интерфейсе:
и dialog
запуск в emacs, запущенный в xterm:
Имейте в виду, чтоТермин ANSIпредназначен для конкретного описания терминала,eterm-color
- которыйнетв Дебианеncurses-base
пакет: вам понадобитсяncurses-term
Аналогичные предостережения применимы к любой системе, которая переносит полную базу данных терминала в отдельный пакет.
Дальнейшее чтение:
- AnsiTerm(Emacs вики)
- AnsiTermПодсказки(Emacs вики)
- Emacs: Запустить Shell в Emacs(Автор: Кса Ли)
Что касается debconf
сообщения, то google — ваш друг. Вот несколько достаточно полных ответов:
решение3
Это нормальное сообщение при выполнении неконтролируемых удаленных команд. Просто поместите это в начало вашего неконтролируемого скрипта:
export DEBIAN_FRONTEND=noninteractive
это сообщит скриптам, что вы выполняете автоматический скрипт, поэтому они будут знать, что нужно просто выполнять поведение по умолчанию... похоже, но более применимо к добавлению флага -y к некоторым входным параметрам cli