Рішення Алекса пригнічує помилки, і він майже зрозумів причину, але він не дає змоги відповідати на будь-які запитання (що добре, коли ви заздалегідь задали відповіді та працюєте зі сценарію, але справді дратує, коли ви намагаєтеся нові пакети ). Основне питання полягає у взаємодії між припущеннями, зробленими різними фронтендами 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"