Неможливо ініціалізувати frontend: діалогове вікно при використанні ssh


52

Я виконую наступну команду над ssh у тестовому середовищі як root:

ssh <remote_srv> "apt-get autoremove"

У моєму sshd_config у мене є "PermitRootLogin без пароля", і я додав корінь id_rsa.pub у файл дозволених ключів на віддаленому сервері.

Проте я отримую такі помилки:

debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (This frontend requires a controlling tty.)
debconf: falling back to frontend: Teletype

Я переглянув це на сторінках ssh із де-чоловіка, але не міг обернутись своїм поясненням на псевдо-термінах і ttys.

Хтось може пояснити вищезгадані помилки? Я здогадуюсь, це варіант відсутній, але який?

Обидві платформи - Ubuntu 14.04 LTS.

Відповіді:


62

Я вважаю, що це має щось спільне з тим, що apt-get autoremoveвін працює в неінтерактивній оболонці. Див. Чи можливо відповісти на діалогові запитання при установці під докер?

Здається, рішення префікса команди DEBIAN_FRONTEND=noninteractive:

ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"

12
Це трапляється під час використання apt-get під час встановлення докера, додавання префіксу чудово працює
Ніл Макгілл

Дякую за коментар Ніл. Я відчував, що втратив шлях, але зіткнувся з тією ж проблемою під час використання apt-get під час встановлення докера.
Qcom

13

Рішення Алекса пригнічує помилки, і він майже зрозумів причину, але він не дає змоги відповідати на будь-які запитання (що добре, коли ви заздалегідь задали відповіді та працюєте зі сценарію, але справді дратує, коли ви намагаєтеся нові пакети ). Основне питання полягає у взаємодії між припущеннями, зробленими різними фронтендами ssh та debconf.

Почнемо з ssh. ssh припускає, що, коли ви не вказуєте віддалену команду, ви хочете pty на віддаленому кінці, і ви вказуєте віддалений, який ви не робите (це працює надзвичайно добре 90% часу, тільки не ця). Це може бути замінено -tпараметром, який примушує pty, або -Tпараметром, який не примушує pty (або відповідними параметрами файлу конфігурації). Далі при використанні pty TERMкопіюється змінна середовища (винятки можуть застосовувати перевірочну документацію на заповнені деталі та форму введення офіційних тоталізаторів). Також зверніть увагу, що -xпараметр вимикає пересилання X11 і -Xдозволяє його.

Debconf сам по собі не має вимог до інтерактивності (за задумом), але це різні фронталі, і кожен має різні вимоги.

Я вважаю, що найкращим фронтендом є гном (є також кед-фронт, з яким я не працював). Fntend gnome (і kde один) також потребує деяких бібліотек, що не замовчуються, та сервера X11, тому командний рядок для примушування fntend gnome (після встановлення відповідних бібліотек) буде

ssh -X <remote_srv> "DEBIAN_FRONTEND=gnome apt-get autoremove"

або якщо ви віддаєте перевагу kde

ssh -X <remote_srv> "DEBIAN_FRONTEND=kde apt-get autoremove"

Діалоговий діапазон (за замовчуванням) вимагає pty та терміналу з мінімальним рівнем функціональності, визначеним у змінній TERM (на практиці це все, що має повний опис терміна, за винятком німого).

ssh -t <remote_srv> "TERM=$TERM DEBIAN_FRONTEND=dialog apt-get autoremove"

або

ssh -t <remote_srv> "apt-get autoremove"

frontend readline має менш жорсткі вимоги і буде працювати з тупими терміналами, але знадобиться pty.

ssh -t <remote_srv> "DEBIAN_FRONTEND=readline apt-get autoremove"

Фронтальний редактор залежить від редактора, який матиме конкретні вимоги залежно від редактора.

ssh -t <remote_srv> "DEBIAN_FRONTEND=editor EDITOR=vi apt-get autoremove"
ssh -X <remote_srv> "DEBIAN_FRONTEND=editor EDITOR=gvim\ -f apt-get autoremove"

Неінтерактивний фронтменд не має жодних вимог, але він не задає жодних питань (що може бути, а може і не бути тим, що ви хочете).

ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"

"фронтенд readline має менш жорсткі вимоги і працюватиме з тупими терміналами, але знадобиться pty." Чи можете ви пояснити, як я можу встановити pty?
linuxatico

@linuxatico, ssh -tбільш детальну інформацію та інші параметри дивіться на сторінці ssh man. Також перечитайте другий параграф цієї відповіді.
hildred
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.