После перехода на root и запуска непосредственно из командной строки "apt" обновление ", некоторые обновления пакетов приводят к появлению диалогового окна - белый текст на синем, с выделением красного блока для опции, выбранной с помощью клавиши табуляции) - которое после использования табуляции для выбора соответствующей опции и последующего ввода продолжает выполнение процесса. .
Теперь, если команда apt upgrade помещена в исполняемый сценарий оболочки Bourne (вместе с другими командами, например, apt-file update, apt update перед обновлением apt), и процесс обновления apt вызывает диалоговое окно для получения пользовательского ввода (оставьте старые измененные config, замените config новой версией и т. д.), тогда ввод с клавиатуры игнорируется - символы выводятся на терминал, но не отображаются в процессе диалога.
Единственное, что можно сделать, это перейти к другому X-терминалу, убить процесс apt, удалить файл блокировки, запустить dpkg --configure -a, запустить apt-get -f upgrade и т. Д.
Я подозреваю, что проблема, возможно, связана с перенаправлением stdin и / или режима tty, который изменяется на необработанный режим при вызове диалога.
Можно ли запустить apt из сценария оболочки с некоторыми необходимыми настройками, чтобы ввод не терялся при вызове диалога из apt?
Эта проблема характерна для Debian, Ubuntu и Linux Mint.
Вся моя ошибка в сценарии оболочки.
Я делал эхо Y | apt upgrade
, который, очевидно, вызывает проблему перенаправления при вызове диалога.
Мне следовало выполнить apt upgrade -y
или wajig upgrade -y
.
Когда я впервые попробовал apt -y upgrade
, он пожаловался на неправильный синтаксис. поэтому я прибег к тому плохому уловку, который, как я забыл, применил.
Пусть другие заметят, чтобы избежать подобных проблем.