通过 SSH 进行“apt upgrade”:此前端需要控制 tty

通过 SSH 进行“apt upgrade”:此前端需要控制 tty

在升级我们的 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 时无法初始化前端:对话框

相关内容