在升级我们的 Linux 服务器时,我从其中一台管理服务器发出如下命令:
ssh server1.mycompany.com apt upgrade
在某些情况下,我从命令中获得以下输出:
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.)
由于我无法与对话框交互,我猜是选择了默认值。其他人如何处理这个问题?登录到每个服务器运行 apt upgrade,以防弹出对话框,这听起来不是解决办法。也许有一种方法可以在对话框弹出时中止“apt upgrade”或其他操作?或者更好的是,也许有一种方法可以让弹出窗口显示在 SSH 连接的客户端,即我正在 ssh 的服务器上从?
答案1
-t
您需要一个终端,您可以通过强制使用 pty 或-T
强制不使用 pty的参数(或相应的配置文件选项)进行设置 。
此外,当使用 pty 时,TERM
会复制环境变量(可能会出现例外情况,请检查文档以了解已完成的详细信息和官方抽奖报名表)。
您可以指定非交互式前端,它没有任何要求并且不会询问任何问题(这可能是也可能不是您想要的):
ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"
欲了解更多信息,请参阅 Ask Ubuntu 帖子 使用 ssh 时无法初始化前端:对话框。