Я выполняю следующую команду над ssh в среде тестирования от имени пользователя root:
ssh <remote_srv> "apt-get autoremove"
В моем sshd_config у меня есть «PermitRootLogin без пароля», и я добавил id_rsa.pub пользователя root в файл author_keys на удаленном сервере.
Тем не менее я получаю следующие ошибки:
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
Я искал это на страницах de man ssh, но не мог сосредоточиться на объяснении псевдо-терминов и ttys.
Есть ли кто-нибудь, кто может объяснить вышеуказанные ошибки? Я полагаю, что этот вариант отсутствует, но какой?
Обе платформы являются Ubuntu 14.04 LTS.
Я полагаю, что это имеет некоторое отношение к тому, которое apt-get autoremove
выполняется в неинтерактивной оболочке. См. , это possibe для ответа на диалоговые вопросы при установке при докере?
решение, кажется, для добавления префикса команды DEBIAN_FRONTEND=noninteractive
:
ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"
Решение Alex действительно подавляет ошибки, и он почти разобрался в причине, но это не позволяет Вам отвечать на любые вопросы (который прекрасен, когда Вы предварительно отобрали ответы и работаете из сценария, но реального раздражения при попытке новых пакетов). Базовой проблемой является взаимодействие между предположениями, сделанными ssh и различным frontends debconf.
Позволяют нам запуститься с ssh. ssh, предполагает, что, когда Вы не указываете удаленную команду, Вы хотите имущество на удаленном конце и что Вы указываете удаленное, которое Вы не делаете (который работает замечательно хорошо 90% времени, просто не этот). Это может быть переопределено -t
опция, которая вызывает имущество или -T
опция, которая не вызывает имущества (или соответствующие опции файла конфигурации). Далее при использовании имущества TERM
переменная среды копируется (исключения могут применить документацию проверки для завершенных деталей и официальной формы ввода тотализаторов). Также знаменитый -x
опция отключает передачу X11, и -X
включает его.
сам Debconf не имеет никаких требований интерактивности (дизайном), но различные frontends делают, и у каждого есть различные требования.
я полагаю, что выглядящий лучше всего frontend является гномом (существует также фронтэнд рунца, что я не получил работу). Гном frontend (и kde один также) требует, чтобы некоторые библиотеки не по умолчанию и сервер X11, поэтому командная строка вынудили гнома frontend (после того как соответствующие библиотеки установлены), был бы
ssh -X <remote_srv> "DEBIAN_FRONTEND=gnome apt-get autoremove"
или если Вы предпочитаете kde
ssh -X <remote_srv> "DEBIAN_FRONTEND=kde apt-get autoremove"
, диалоговое окно frontend (значение по умолчанию) требует имущества и терминала с минимальным уровнем функциональности, указанной в ТЕРМИНЕ переменная (на практике, это - что-либо с полным terminfo описанием кроме немых).
ssh -t <remote_srv> "TERM=$TERM DEBIAN_FRONTEND=dialog apt-get autoremove"
или
ssh -t <remote_srv> "apt-get autoremove"
readline frontend имеет менее строгие требования и будет работать с простыми терминалами, но будет нуждаться в имуществе.
ssh -t <remote_srv> "DEBIAN_FRONTEND=readline apt-get autoremove"
редактор frontend зависит от редактора, который имел бы конкретные требования в зависимости от редактора.
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"
неинтерактивный frontend не имеет никаких требований, но он не задает вопросов (который может или не может быть тем, что Вы хотите).
ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"