我在测试环境中以root身份在ssh上执行以下命令:
ssh <remote_srv> "apt-get autoremove"在我的sshd_config中,我有“没有密码的PermitRootLogin”,并将根的id_rsa.pub添加到远程服务器上的authorized_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我已经在ssh的de页面上查过了,但我无法将我的注意力集中在对伪术语和ttys的解释上。
有人能解释上面的错误吗?我想这是个缺失的选择,但是哪一个呢?
这两个平台都是Ubuntu14.04LTS。
发布于 2014-08-04 10:40:20
我认为这与apt-get autoremove是在一个非交互的shell中运行的事实有关。请参阅安装时是否有可能回答对话问题?
解决方案似乎是在命令的前缀加上DEBIAN_FRONTEND=noninteractive:
ssh <remote_srv> "DEBIAN_FRONTEND=noninteractive apt-get autoremove"发布于 2015-11-02 23:33:16
Alex的解决方案确实可以抑制错误,而且他的原因几乎是正确的,但它不允许您回答任何问题(当您预先准备了答案并运行在脚本中时,这是很好的,但是当您尝试新的包时,这是非常烦人的)。其核心问题是ssh所作的假设与debconf的各种前沿假设之间的相互作用。
让我们从ssh开始。ssh假设,当您不指定远程命令时,您需要远程端的pty,而指定remote则不需要(这在90%的情况下运行得非常好,而不是这次)。这可以被-t选项覆盖,该选项强制pty或-T选项强制不使用pty (或相应的配置文件选项)。此外,在使用pty时,将复制TERM环境变量(异常可以应用检查文档来获取完整的详细信息和正式的抽奖输入表单)。还要注意的是,-x选项禁用了X11转发,-X启用了它。
Debconf本身没有交互需求(通过设计),但是不同的前端可以做到这一点,而且每个前端都有不同的需求。
我相信最好看的前端是gnome (也有一个前端我没有得到工作)。gnome前端(以及kde )需要一些非默认库和一个X11服务器,因此命令行强制gnome前端(一旦安装了适当的库)。
ssh -X <remote_srv> "DEBIAN_FRONTEND=gnome apt-get autoremove"或者如果你喜欢kde
ssh -X <remote_srv> "DEBIAN_FRONTEND=kde apt-get autoremove"对话框前端(默认)需要一个pty和一个终端,它具有在术语变量中指定的最低功能级别(实际上,除了哑之外,这是具有完整的终端描述的任何东西)。
ssh -t <remote_srv> "TERM=$TERM DEBIAN_FRONTEND=dialog apt-get autoremove"或
ssh -t <remote_srv> "apt-get autoremove"读行前端有较低的要求,将与哑巴终端工作,但将需要一个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"https://askubuntu.com/questions/506158
复制相似问题