一个名为“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 upvagrant 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 poweroff、vboxmanage unregistervm --delete 这是唯一适合我的解决方案。谢谢。【参考方案6】:

对于我来说,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 -fVM not createdvagrant 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,所以错误可能是因为这个。我都试过了,destroyup、删除文件夹等等。每当我尝试运行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\homesteadfolder。因为如果还有一个名为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 机器已经存在的主要内容,如果未能解决你的问题,请参考以下文章

怎么查看homestead自带的php

下载Homestead并离线安装Homestead

下载Homestead并离线安装Homestead

让我们一起爱(装)上Homestead吧

homestead安装

Laravel+Homestead+nginx 代理:在我的路线中获取正确的 url