一个名为“homestead”的 VirtualBox 机器已经存在
Posted
技术标签:
【中文标题】一个名为“homestead”的 VirtualBox 机器已经存在【英文标题】:A VirtualBox machine with the name 'homestead' already exists 【发布时间】:2015-01-15 14:48:33 【问题描述】:自从宅基地2.0以来,宅基地laravel一直没有工作
我不知道为什么“homestead init”会在 mydirectory/.homestead 中创建一个 Homestead.yaml 文件 而不是在项目目录中。 Homestead up OR Vagrant up 创建以下消息
名称为“homestead”的 VirtualBox 机器已经存在。
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'laravel/homestead'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'laravel/homestead' is up to date...
A VirtualBox machine with the name 'homestead' already exists.
Please use another name or delete the machine with the existing
name, and try again.
【问题讨论】:
当您直接从文件系统中删除而不通知 Vagrant 和/或 VirtualBox 时,可能会发生这种情况。试试VBoxManage list vms
看看是否有需要删除的幽灵/孤儿/僵尸条目。
对于宅基地的具体答案 - 请参阅answer from @TheSteed
github.com/hashicorp/vagrant/issues/6623#issuecomment-160980634
【参考方案1】:
VBoxManage:错误:无法将目录“/Users/xxxx/VirtualBox VMs/ubuntu-20.04-amd64_xxxxxxx”重命名为“/Users/xxxx/VirtualBox VMs/homestead”以保存设置文件(VERR_ALREADY_EXISTS)
在 mac 中为我手动删除 /Users/xxxx/VirtualBox VMs/homestead
【讨论】:
【参考方案2】:要执行的命令:
vagrant box list
vagrant box remove laravel/homestead
vagrant global-status
vagrant destroy nameOfYourBox
打开你的 VirtualBox 并删除你宅基地的所有项目
vagrant up
【讨论】:
这个线程中提到的唯一对我有用的解决方案,谢谢!【参考方案3】:您只需将密钥 name
添加到您的 homestead.yaml
文件中,就像这样:
name: name_of_you_machine
这对我有用。
【讨论】:
这就是我一直在寻找的。当您想尝试其他 Homestead 版本时非常有用。我们把这个放在哪里?检查下面的答案:P【参考方案4】:Windows10
编辑 Homestead.yaml 文件并为盒子命名:
ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox
name: my-new-vbox #new name for the box
然后运行 vagrant up
或 vagrant up --provision
或者
在 GUI 中打开 Virtualbx 应用程序并删除所有导致问题的 virtualbox 并运行上述命令
或者
删除 homestead 文件夹中的 "Vagrant" 文件并运行上述命令。
【讨论】:
【参考方案5】:来自以下消息:
名称为“vm_name”的 VirtualBox 计算机已存在。 请使用其他名称或删除现有的机器 名称,然后再试一次。
我从命令行列出了当前正在运行的虚拟机:
VBoxManage list vms
结果:
“vm_name”8ba467b7-da96-4f68-9bf8-671dd6f0d007
然后继续删除有问题的虚拟机:
VBoxManage unregistervm 8ba467b7-da96-4f68-9bf8-671dd6f0d007 --delete
【讨论】:
显示如何从命令行删除 VM 的唯一答案 请注意,如果 VirtualBox VM 仍在运行,这将不起作用。必须关闭 VM,否则命令将失败“因为 VM 已锁定”。 是的,该命令将关闭电源。对我有用的总结:vboxmanage list vms、vboxmanage controlvm对于我来说,id 文件存在于下面提到的位置。 D:\drupalvm.vagrant\machines\drupalvm\virtualbox
【讨论】:
【参考方案7】:我遇到了以下错误:
错误:
A VirtualBox machine with the name 'homestead-7' already exists.
Please use another name or delete the machine with the existing
name, and try again.
解决方案:
找到 VirtualBox VMS 文件夹,在我的例子中它位于~/VirtualBox VMs
使用ls
命令列出文件夹中的元素,并查看虚拟机是否存在
删除带有机器名称的文件夹,在我的例子中是 homestead-7
在homestead文件夹中重新执行vagrant up
命令
仅此而已,希望对您有所帮助,这是我的解决方案。
问候!
【讨论】:
【参考方案8】:重命名已经存在的默认虚拟机
免责声明
以下过程将破坏您的虚拟机,并且可能仅适用于像我这样的目标环境!对于生产环境,可以考虑修复关联,如described here
我在使用覆盖现有 VM 的默认名称后遇到了这个问题
Vagrant.configure("2") do |config|
config.vm.define :ubuntu_test
还设置了 VirtualBox 名称(作为新手,我认为 Vagrand 也会使用此名称)
config.vm.provider "virtualbox" do |vb|
vb.name = "Ubuntu-Test"
end
通过添加config.vm.define
,Vagrant 似乎不再将 VirtualBox VM 与 Vagrant 文件关联,因为即使 vagrant destroy -f
说 VM not created
但 vagrant up
抛出此错误
删除那些僵尸虚拟机名称为“Ubuntu-Test”的 VirtualBox 机器已经存在。
-
如果VM正在运行,先停止它:
vboxmanage shutdown <VMName>
(这里的名字是Ubuntu-Test
)
通过运行vboxmanage list vms
获取 ID
删除:vboxmanage unregistervm <Id> --delete
现在可以使用vagrant up
重新创建您的 VM
使用vagrant global-status --prune
,你的新名字就出现了
【讨论】:
【参考方案9】:我编辑了 Homestead.yaml 并为其添加了新名称
ip: "192.168.10.10"
memory: 2048
cpus: 4
provider: virtualbox
name: my-new-homestead-box-name
【讨论】:
这是正确的做法。 homestead.rb 配置首先在 homestead.yaml 中查找 name 变量 我试图让另一个宅基地运行。从来没有想过会这么容易。只需在 Homestead.yaml 中添加一个名称 这确实应该是公认的答案,并且最容易实现。 同意。这是一个简单的答案,让我摆脱了 Linux-VirtualBox-Vagrant-Laravel-Homestead 流沙 完全同意!没有比这更容易的了。【参考方案10】:在框之后和您的名字之前添加--force
。
【讨论】:
请edit 解释您为什么认为此解决方案会起作用、它的作用和方式。同样值得将您的英语正式化(尽管我很欣赏英语可能不是您的第一语言),尽管我已经编辑了您的答案以纠正和整理。【参考方案11】:我解决了这个编辑/Homestead_folder/scripts/homestead.rb
寻找vb.name = settings["name"] = "homestead"
行并将homestead
更改为HOMESTEAD
和“vói lá”,这对我有用。
【讨论】:
这是我见过的最好的答案。 这行得通。在此文件中搜索所有记录 vb.name = settings['name'] 并相应更改 见answer from @TheSteed【参考方案12】:这些都不适合我。我使用的是旧的开发机器
我尝试过:
vagrant global-status
> 销毁任何你不需要的id
或匹配的冲突
打开 virtualbox 并删除 + 删除您不需要或有冲突的文件
什么有效:
找到您的 ~/.vagrant/machines/
或 ~/.vagrant.d/boxes
文件夹。就我而言,它包含有冲突的 vm 以及一堆旧的遗留 vm 机器,由于某种原因,步骤 1 和 2 没有删除。
清除这些后,终于一切正常了!
【讨论】:
如果冲突的虚拟机可以被删除/清除,这是一个很好的答案。既然文件夹是~/.vagrant.d/boxes/
@wired00,就应该修改这个答案
@lintuxvi 刚刚添加 :)
谢谢!为我解决了问题!【参考方案13】:
您可以打开 VirtualBox GUI 并删除有冲突的虚拟机。
【讨论】:
【参考方案14】:我参加这个聚会有点晚了,但对于遇到这个问题的其他人来说,SergioPeluzzi 是最接近的,但没有得到雪茄:
寻找 vb.name = settings["name"] = "homestead" 行并将 "homestead" 更改为 "HOMESTEAD" 和 "vói lá"
这行其实是:
vb.name = settings["name"] ||= "homestead"
从设置["name"] 部分可以看出,您只需在 Homestead YAML 文件中添加一个名称字段,例如
memory: 2048
cpus: 1
provider: virtualbox
name: my-sexy-homestead-box
【讨论】:
如果您实际上安装和使用多个 Homestead 实例,这是最好的答案。 我同意@lintuxvi,如果您使用多个 Homestead 实例,这是最好的答案 密钥是name: my-sexy-homestead-box
-- 谢谢!
最好的答案!
这是正确答案。如果您有多个 Homestead 实例正在运行,则其他答案不正确(实际上会弄乱您的安装)。【参考方案15】:
打开 VirtualBox GUI。查看您的虚拟机并将其删除。 它解决了我的问题。
【讨论】:
【参考方案16】:我今天遇到了同样的问题。 Windows 10。我最近更新了 Homestead,所以错误可能是因为这个。我都试过了,destroy
、up
、删除文件夹等等。每当我尝试运行vagrant up
时,它都会显示这种错误。解决方案?更新后,我注意到 Homestead 现在以项目文件夹名称命名这些框,并且 Homestead.yaml 包含所有这些信息。我只是运行那个 Homestead Windows 配置vendor\\bin\\homestead make
,然后运行vagrant up
(在确保一切干净之前),瞧,看起来机器现在正在启动。 =) 如果需要,请尝试。
【讨论】:
【参考方案17】:就我而言,除了该错误消息之外,没有任何迹象表明 VM“已经存在”。 VirtualBox UI 上什么都没有,“vboxmanage list vms”没有返回,“vagrant global-status”没有任何返回,“.vagrant.d\boxes”中不存在等等。我通过在 VM VirtualBox 管理器中手动创建一个新的同名 VM(使用“新建”按钮 + 接受所有默认值),然后将其删除(右键单击 > 删除)来解决它。之后,“vagrant up”按预期工作了。
【讨论】:
【参考方案18】:如果您想保留您的机器,而不破坏并重新创建以下步骤应该可以解决您的问题。 (我在 OS X El Captain,Vagrant 1.8.1 上工作)
以调试模式运行宅基地
homestead --debug up
在输出中寻找类似的东西:
INFO 机器:初始化机器:默认 INFO 机器:- 提供者:VagrantPlugins::ProviderVirtualBox::Provider INFO 机器: - 框:# INFO 机器:- 数据目录:/Users/YOUR_HOME_DIR/Workspace/Homestead/.vagrant/machines/default/virtualbox
数据目录,是你感兴趣的路径。
然后vboxmanage list vms
“宅基地”0e8438b9-4a67-4fb1-80cb-2c62cf04ab5c “定居者_默认_1447385930122_73498_1474294682778_13108” 93ecb93f-f159-4406-a384-5312b4d3ab34
编辑 id 文件,在您在上一个命令中找到的路径中
vi /Users/YOUR_HOME_DIR/Workspace/Homestead/.vagrant/machines/default/virtualbox/id
用您要修复的虚拟机的 ID 替换该文件的内容,在这种情况下是
0e8438b9-4a67-4fb1-80cb-2c62cf04ab5c
现在试试
homestead up
虚拟机应该开始启动。它可能有效,或者您可能遇到 ssh 身份验证问题
default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Authentication failure. Retrying... default: Warning: Authentication failure. Retrying...
要解决这个问题,请执行以下操作 检查 Homestead SSH 配置
homestead ssh-config
你应该得到类似的东西
主机默认HostName 127.0.0.1 用户流浪端口2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no 密码验证无 身份文件 “/Users/pryznar/.vagrant.d/insecure_private_key” 身份只有是 日志级别致命
编辑IdentityFile文件
/Users/YOUR_HOME_DIR/.vagrant.d/insecure_private_key
检查 Homestead.yml
cat /Users/YOUR_HOME_DIR/.homestead/Homestead.yaml
然后将路径复制到密钥keys下的文件,并从该文件复制私钥
cat ~/.homestead/ssh/id_rsa
最后一步是将 /Users/YOUR_HOME_DIR/.vagrant.d/insecure_private_key 中的私钥替换为您刚刚复制的私钥
现在再次尝试梯级宅基地,应该可以工作。
homestead up
我收到了一些警告,但到目前为止它没有问题
==> 默认值:警告:在命令行界面上使用密码可能不安全。 ==> 默认值:ERROR 1045 (28000): Access denied for user 'homestead'@'localhost' (使用密码: YES) SSH 命令 以非零退出状态响应。 Vagrant 假设这意味着 命令失败。此命令的输出应在日志中 更多。请阅读输出以确定出了什么问题。
【讨论】:
【参考方案19】:如果您是 Windows 用户,请确保删除 C:\Users\<Username>\VirtualBox VMs\homestead
folder。因为如果还有一个名为homestead的文件夹,vagrant up
的动作就不会完成
【讨论】:
就我而言,我有两个文件夹:homestead 和 homestead-7。删除两者后,问题解决。谢谢!【参考方案20】:Vagrant 依赖于 VirtualBox(如果这是默认提供程序),因此它会在配置您的 VM 之前首先检查现有环境。
它正在执行以下命令:
VBoxManage list vms
当它找到具有相同主机名的虚拟机时,它就会失败。
您可以通过以下方式对其进行调试:
vagrant --debug up
找出确切的原因。
解决方案
如果您打算在不同的文件夹中使用多个虚拟机,那么您需要在您的Vagrantfile
中更改您的config.vm.hostname
(也可能是config.vm.provider(name)
)以使其独一无二。或者干脆删除它,这样 Vagrant 就会为每个虚拟机分配一个不同的名称。
如果不是这种情况,只需关闭并取消注册之前因运行而发生冲突的 VM:
VBoxManage controlvm NAMEOFVM poweroff
VBoxManage unregistervm NAMEOFVM --delete
然后重新运行您的vagrant up
。
如果目录重命名失败(因为你错过了--delete
),那么rename or remove the destination folder,例如:
rm -fr ~/"VirtualBox VMs/NAMEOFVM"
然后重试。
这个问题可能与:GitHub issue #2969 - vagrant up not detecting a previously run VM
【讨论】:
【参考方案21】:我通过使用vboxmanage
获取VM的ID来解决。
$ vboxmanage list vms
"my-vm" c700b8b6-b766-4638-871b-736b44b7db18
将所需 VM 的 ID(c700…db18
字符串)复制到 ~/.vagrant/machines/default/virtualbox/id
的内容中。保存文件,然后运行 vagrant up
以使 vm 正常工作,而无需销毁它。
【讨论】:
您的回答应该被接受!像其他人建议的那样,您在不破坏机器的情况下解决了问题 请注意,如果您通过define
(像我一样)以不同的方式命名您的盒子,那么路径将不是../default/
,它是:.vagrant/machines/<box name>/virtualbox/id
。 #利润!
工作就像一个魅力。只是好奇为什么我的 vm 的 id 突然改变了,这是必要的。
在我的开发环境中,id 文件位于同一路径上,但位于项目的根目录上。在 project-root/.vagrant/machines/default/virtualbox/id
对我来说,.vagrant
文件夹不在 ~/
中,而是在 homestead 安装文件夹中(即您运行 vagrant up
的文件夹)【参考方案22】:
有时您可能不想删除旧框。昨天可能旧的 Vagrant 坏了,我更新了 Vagrant 和 Virtualbox,但文件夹映射不起作用。我想运行新盒子并出现此错误。
我不想删除旧盒子(因为我想运行一些备份)但我想运行新盒子。解决方案是运行 VirtualBox,右键单击 Homestead 机器并选择设置,然后将名称从 homestead
更改为 homestead_old
。
在那之后,我能够安装宅基地,但拥有这台旧机器,也可以运行它来进行我需要的任何备份。
【讨论】:
【参考方案23】:如果您在 Windows 中使用 homestead,只需打开您的 Oracle VM VirtualBox 并删除 homestead
VM。
【讨论】:
【参考方案24】:我今天遇到了同样的问题。花几个小时寻找解决方案。 如果由于任何原因您找不到退出虚拟机的列表,请输入终端
sudo virtualbox
这将在 GUI 中运行 Virtual Box。您应该会看到完整的虚拟机列表,并且可以从那里管理它们。 仅键入“virtualbox”不会显示任何内容。您需要是 root(管理员)。
感谢mightyspaj 的提示。
【讨论】:
使用 OS X 上的常规 virtualbox 应用程序,我无法在列表中看到任何 VM,即使我被告知它已经存在。然后我输入 sudo virtualbox 并看到一大堆虚拟机,问题就解决了。谢谢。 永远不要在 VirtualBox 中使用 sudo。你会搞砸权限【参考方案25】:经过几个小时的故障排除后,我没有其他任何工作,因为没有人提到这个小细节。
根据您在安装时的权限,您可能需要以管理员身份运行 virtualbox。只有当我这样做时,我才在虚拟机列表中看到了我的 vagrant box。
然后我开始从 virtualbox 中删除我名为 homestead
的虚拟机,问题就解决了。
【讨论】:
【参考方案26】:对我来说,这台机器在 VirtualBox 应用程序中没有显示为活动虚拟机。要解决这个问题,我必须这样做:
vagrant global-status
这给了我需要销毁的机器的 ID。使用 ID,运行:
vagrant destroy VM ID
我必须在 sudo 中运行它才能真正销毁机器。那时,我能够运行
vagrant up
【讨论】:
如果您的宅基地箱已损坏,尚未运行,这就是您的答案。在运行 VirtualBox 的 Ubuntu 14.02 上验证。 这很有用,因为它显示了运行 vagrant VM 的目录 命令vagrant destroy vm_id
必须在同一目录下运行。【参考方案27】:
在我的情况下,以下article 提供了解决方案。导致问题的路径 /var/root/VirtualBox VMs/ 中有一个名为 homestead 的文件夹。一旦这个文件夹被删除,rm -r homestead,问题就解决了。如果您看不到或无法访问此路径,请在终端窗口中执行以下命令:
$ sudo -s
$ cd /var/root/VirtualBox\ VMs
然后继续删除 homestead 文件夹。
【讨论】:
【参考方案28】:即使在运行“homestead destory”和“vagrant destroy”之后,我也收到了相同的错误消息。和你一样,我使用的是 VirtualBox 提供者、流浪者和宅基地。这是我所做的:
-
已打开 VirtualBox GUI。我将“宅基地”视为虚拟机,但无法将其删除,按钮显示为灰色。
我退出了我的操作系统,重新登录并重新打开了 VirtualBox。状态现在是“中止”,我可以删除。
~/VirtualBox\ VMs/homestead
中有一些残留文件,所以我运行了rm -r /Users/gabriel/VirtualBox\ VMs/homestead
我现在可以运行“宅基地”
【讨论】:
【参考方案29】:以上都不适合我。我的最终解决方案是:
cd ~/.composer/vendor/laravel/homestead/.vagrant/machines;
rm -R default;
cd /var/www/path/to/project;
homestead up;
【讨论】:
【参考方案30】:我打开了 virtualBox,然后删除了之前创建的 homestead vm。它有帮助。
【讨论】:
以上是关于一个名为“homestead”的 VirtualBox 机器已经存在的主要内容,如果未能解决你的问题,请参考以下文章