Vagrant 正在尝试以需要 TTY 的方式与 UI 交互

Posted

技术标签:

【中文标题】Vagrant 正在尝试以需要 TTY 的方式与 UI 交互【英文标题】:Vagrant is attempting to interface with the UI in a way that requires a TTY 【发布时间】:2014-07-01 05:55:15 【问题描述】:

问题:vagrant up 失败并出现以下错误。我在 Windows 7 上运行 vagrant,基本框是 Ubuntu)(files.vagrantup.com/precise32.box)。

如何解决?

    vagrant.bat up

Bringing machine 'default' up with 'virtualbox' provider...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Available bridged network interfaces:
1) Intel(R) PRO/1000 EB Network Connection with I/O Acceleration
2) Intel(R) PRO/1000 PL Network Connection
Vagrant is attempting to interface with the UI in a way that requires
a TTY. Most actions in Vagrant that require a TTY have configuration
switches to disable this requirement. Please do that or run Vagrant
with TTY.

Process finished with exit code 1

谢谢

【问题讨论】:

【参考方案1】:

This 在 cygwin 上为我工作:

或将其添加到 ~/.bashrc:

export VAGRANT_DETECTED_OS=cygwin

然后我得到“Vagrant 显示一条消息,它需要运行一些内部升级......”

编辑 - 糟糕!很快就谈了。在更新期间,我得到了Warning: Authentication failure. Retrying...,直到超时:P

编辑 2 - I was able to fix it,将 config.ssh.private_key_path 设置为我的 Windows 用户主目录中的 .vagrant.d/insecure_private_key

【讨论】:

我在 Cygwin 下遇到了这个问题,只需按照您的建议设置环境变量即可。我不需要做任何其他事情。我怀疑 Vagrant 不知何故对环境感到困惑。 我还在 cygwin 的 bashrc 文件中简单地设置了 export VAGRANT_DETECTED_OS=cygwin 并且效果很好。 将 export VAGRANT_DETECTED_OS=cygwin 添加到 ~/.bashrc 在我的 windows cygwin 设置中起到了作用,谢谢!作为旁注,我还让 cygwin 应用程序以管理员身份运行。【参考方案2】:

我在销毁 Vagrant Box 时遇到了同样的错误。我只是添加了-f,它就完成了工作。

vagrant destroy m001 -f

这是因为当脚本尝试vagrant destroy 时,Vagrant 要求 [Yes/No] 确认。添加-f 会跳过。

【讨论】:

我遇到了“vagrant box remove”的问题,-f也解决了这个问题。干杯。 可以确认使用 -f 解决了“vagrant box remove”问题。【参考方案3】:

在将 Vagrant 从 1.4 升级到 1.6.3 (Windows 7) 后,我遇到了同样的错误。

运行 VAGRANT_HOME\bin\vagrant.exe 为我手动解决了这个问题:

执行 VAGRANT_HOME\bin\vagrant.exe Vagrant 显示一条消息,提示它需要运行一些内部升级 “按任意键继续”... 该过程完成后(需要几分钟),我就可以像往常一样继续启动 Vagrant 实例。

【讨论】:

这适用于任何操作系统。在 OSX 上运行 vagrant 解决了同样的问题。【参考方案4】:

这是因为 Vagrant 找到了多个可以用作公共网络的以太网接口,而 Vagrant 无法决定使用哪一个。

有 3 个选项:

    停用 2 个适配器之一,以便 Vagrant 可以使用另一个

    Specify the Ethernet adapter 你希望 Vagrant 在 vagrantfile 中使用。像这样:

    app.vm.network "public_network", bridge: "Intel(R) PRO/1000 PL Network Connection"
    

    按照 Al Belsky 的回答中已经描述的手动运行 vagrant 可执行文件

【讨论】:

【参考方案5】:

如果您在 Windows 上并通过 MinGW(例如 Git Bash)启动 Vagrant 并收到此消息,请尝试通过 Windows 的默认 cmd.exe 运行一次。然后您就可以回答有关您的网络适配器的问题了。

【讨论】:

【参考方案6】:

我正在使用Vagrant 1.7.4

在运行 vagrant up 之前执行以下代码:

export VAGRANT_DETECTED_OS=cygwin

这将消除 vagrant 的退出,并允许您选择网络接口。

【讨论】:

【参考方案7】:

这也可能是由于未在 Bios 中启用硬件虚拟化造成的。

在 Windows 10 中也遇到过这种情况,当时 Vagrant 无法正确检测操作系统。

【讨论】:

【参考方案8】:

如果您同时安装了 vmware 和虚拟机并且您尝试使用 MinGW,也会发生这种情况。

【讨论】:

以上是关于Vagrant 正在尝试以需要 TTY 的方式与 UI 交互的主要内容,如果未能解决你的问题,请参考以下文章

图形界面 X Server 的关闭与启动

确定用户是否在当前tty上运行图形界面

vagrant怎么启动两个box

从 vagrant 运行类型安全激活器

停止 qt 写入 /dev/tty0

编写伪装成 TTY 的程序