Когда apt-get upgrade или apt upgrade запускается из сценария оболочки и вызывается «диалог», ввод зависает

После перехода на 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.

0
23.01.2017, 04:54
1 ответ

Вся моя ошибка в сценарии оболочки.

Я делал эхо Y | apt upgrade , который, очевидно, вызывает проблему перенаправления при вызове диалога.

Мне следовало выполнить apt upgrade -y или wajig upgrade -y .

Когда я впервые попробовал apt -y upgrade , он пожаловался на неправильный синтаксис. поэтому я прибег к тому плохому уловку, который, как я забыл, применил.

Пусть другие заметят, чтобы избежать подобных проблем.

0
28.01.2020, 02:46

Теги

Похожие вопросы