Eri*_*ton 14 ubuntu debian ssh apt
apt-get install在非交互式 SSH 会话中运行时,该会话永远不会关闭。例子:
ssh user@target "sudo apt-get -y install my_package"
Run Code Online (Sandbox Code Playgroud)
在my_package没有得到正确安装,但SSH会话刚悬开放。
是否有任何标志可以通过 SSH 开始apt-get工作?
远程安装用于在集成服务器上自动部署包。一旦我们将一些代码更改推送到存储库,作业就会拉入代码、构建包并在集成中部署它以检查一切是否正常(就部署而言)。
apt-get update干净利落地关闭。请注意,这apt-get update不是交互式的,而是apt-get install。这可能表明交互性是一个问题。ssh user@target "sudo apt-get install my_package && echo Hello"永远不会到达的命令echo。debconf 抱怨它找不到一个好的前端(Display、Readline),它回退到 Teletype(虽然 Readline 可用)。-tSSH传递强制 TTY 没有帮助。都没有DEBIAN_FRONTEND=noninteractive。SF 上的以下答案解决了问题:
从 cron bash 脚本运行时,ssh 无法执行远程命令
该-t标志强制进行伪 tty 分配,除非本地没有 TTY。但是两次传递标志-t -t只是假装这样做。这解决了问题。
请参阅 SSH 文档:
-t 强制伪 tty 分配。这可用于在远程机器上执行任意基于屏幕的程序,这非常有用,例如在实现菜单服务时。多个 -t 选项强制 tty 分配,即使 ssh 没有本地 tty。
现在,为什么这样做?事实证明,debconf它不再抱怨日志中的前端。所以我相信根据需要进行双重-t设置(诱饵?)debconf,这允许apt-get install完成干净地结束 SSH 会话。
| 归档时间: |
|
| 查看次数: |
1544 次 |
| 最近记录: |