ubuntu – 执行“apt-get install”时SSH会话永远不会关闭

问题

在非交互式SSH会话中运行apt-get install时,会话永远不会关闭.例:

ssh user@target "sudo apt-get -y install my_package"

my_package确实安装正确,但SSH会话只是悬空.

是否有任何标志可以通过SSH获得apt-get工作?

附加信息

上下文

远程安装用于在集成服务器上自动部署程序包.一旦我们将一些代码更改推送到存储库,作业就会提取代码,构建程序包,并在集成时部署它以检查一切是否正常(就部署而言).

已经尝试过& amp;笔记

>执行apt-get update的同一个SSH会话干净地关闭.请注意,apt-get update不是交互式的,而apt-get install则是.这可能表明交互性是一个问题.
>像ssh user @ target这样的命令“sudo apt-get install my_package&& echo Hello”永远不会到达回声.
> debconf抱怨它找不到一个好的前端(Display,Readline),并且它回退到Teletype(尽管Readline可用).
>关于debconf的前端,使用SSH传递-t强制TTY没有帮助. DEBIAN_FRONTEND =非交互式.
>所有这些都是在Ubuntu 12_04 LTS上完成的.

关于SF的以下答案做了诀窍:

ssh fails to execute remote command when run from cron bash script

-t标志强制执行伪tty分配,除非本地没有TTY.但是像-t -t那样两次传递旗帜只是假装这样做.这解决了这个问题.

请参阅SSH文档:

-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine,which can be very useful,e.g. when implementing menu services. Multiple -t options force tty allocation,even if ssh has no local tty.

现在,为什么这样做?事实证明,debconf不再抱怨日志中的前端.所以我认为双-t设置(诱饵?)debconf根据需要,它允许apt-get安装完成以干净地结束SSH会话.

相关文章

文章浏览阅读2.3k次,点赞4次,收藏22次。最近安装了CARLA预...
文章浏览阅读6.3k次,点赞5次,收藏15次。在清华镜像中下载U...
文章浏览阅读5k次。linux环境, python3.7.问题描述: 安装...
文章浏览阅读4.2k次,点赞4次,收藏17次。要安装这个 standa...
文章浏览阅读894次,点赞51次,收藏31次。在安卓使用vscode主...