Vagrant Up 失败,因为名称已经存在

Vagrant Up failing because the name already exists

我最近开始在我的本地 Wordpress 开发环境中使用 Virtualbox、Vagrant 和 VVV。它非常光滑。

我遇到的一个问题是,在使用 'vagrant halt' 关闭后,下次我使用 'vagrant up' 启动时,我收到此错误:

==> default: Setting the name of the VM: vagrant-local 
The name of your virtual machine couldn't be set because VirtualBox
is reporting another VM with that name already exists. Most of the
time, this is because of an error with VirtualBox not cleaning up
properly. To fix this, verify that no VMs with that name do exist
(by opening the VirtualBox GUI). If they don't, then look at the
folder in the error message from VirtualBox below and remove it
if there isn't any information you need in there.

VirtualBox error:

VBoxManage.exe: error: Could not rename the directory 'C:\VirtualBox VMs\ubuntu-cloudimg-trusty-va
230_94704' to 'C:\VirtualBox VMs\vagrant-local' to save the settings file (VERR_ALREADY_EXISTS)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component SessionMachine, interface IMac
VBoxManage.exe: error: Context: "SaveSettings()" at line 3015 of file VBoxManageModifyVM.cpp

我访问了 C:\VirtualBox VMs\ 列出的位置,实际上,该目录 'vagrant-local' 已经存在。如果我删除(或重命名)此目录并再次 运行 'vagrant up',机器将启动。但是,它也执行完整的配置过程。当然,这需要很长时间。

我使用 VVV 和 Vagrant 的所有默认配置,开箱即用。我应该如何帮助 VirtualBox "clean up properly" 并认识到它不需要在我每次停止和重新启动时重新创建 VM。

或者,我是不是漏掉了什么?

"Beginner level" 欢迎回复,如果不是首选。我是这方面的初学者,感谢您的帮助!谢谢。


当前状态:我已经从 C:\VirtualBox VMs\ 中删除了有问题的 VM; 运行 Git Bash 作为管理员,我已经能够再次使用 vagrant up(完全提供)、vagrant haltvagrant up所有结果都符合预期(第二次 up 没有提供)。截至目前,似乎一切正常。出现...:)

嗯..这是一个奇怪的问题。当你 运行 vagrant halt 它只是发送信号来终止虚拟机。

Vagrant 将所有配置保存在 .vagrant 目录下(至少 mac os 和 linux,不完全确定是否 windows),你永远不应该删除这个目录,因为它有你的虚拟机的所有引用,所以当你下次 运行 vagrant up 时,vagrant 会从这个目录中搜索信息来启动相应的虚拟机,它知道这一点不需要重新创建 VM 或配置。

删除有关您的虚拟机信息的正确方法是运行 vagrant destroy,它将删除所有.vagrant 目录和虚拟机。

然后有一些方法可以从 .vagrant 和您的 vm 再次建立这种联系,但这有点棘手,不确定它们是否得到官方支持

当你使用 vagrant 时,VirtualBox 应该变得 (almost) 透明,你不需要启动它来使用你的 VM,一切都应该 运行 来自 vagrant(至少在初级水平)

注意:运行宁 windows,如果您 运行 作为管理员

应该没问题

我在 vagrant up 时遇到了上面提到的 git bash 错误。出现此问题的可能性有多种。

我已经使用下面提到的步骤和 vagrant 命令正常工作。

  1. 打开 Oracle VM 虚拟管理器 - 在这个 Oracle VM 虚拟 管理器面板,删除当前 运行ning 虚拟机。
  2. 退出 git bash 命令提示符
  3. 再次打开gitbash
  4. 运行 vagrant up 命令作为 vagrant up

Vagrant up 命令将 运行 成功。

请注意: 确保在关闭 git bash 命令提示符时 运行 vagrant halt 命令。

首先,vagrant halt 然后退出命令。

VBoxManage: error: Could not rename the directory '<SOURCE>' to '<DESTINATION>' to save the settings file (VERR_ALREADY_EXISTS)

如果您不关心您的 VM 状态并且您可以从头开始配置它,删除您的目标文件夹,那么它应该可以工作。还要仔细检查您是否也将其从 VirtualBox 列表中删除。

这可能是因为 VirtualBox 没有正确清理或者您中断了清理过程(例如 Ctrl-Cvagrant destroy 中间)。

如果您使用的是 Mac,而 vagrant destroy 不起作用,您会收到消息:The name of your virtual machine couldn't be set because VirtualBox is reporting another VM with that name already exists. 那么您需要转到 VirtualBox 用户文件夹中的 VMs 文件夹并删除 VM 文件夹。

它处于无法构建 VM 的奇怪状态,因为它正在尝试为已存在的同名文件夹创建设置。

我的比大多数都简单一些。我检查了 "Virtual Box VMs" 目录(windows)并删除了试图命名的文件夹。这为我解决了问题。