名称为“ homestead”的VirtualBox计算机已经存在


112

从Homestead 2.0开始,宅基laravel一直没有工作

我不知道为什么“ homestead init”在mydirectory / .homestead中而不是在项目目录中创建Homestead.yaml文件。宅基地或流浪汉创建以下消息

名称为“ 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.

1
当您直接从文件系统删除而不通知Vagrant和/或VirtualBox时,可能会发生这种情况。尝试VBoxManage list vms查看是否有需要清除的幽灵/孤儿/僵尸条目。
MarkHu 2015年

对于宅基地的具体答案-请参阅@TheSteed的答案
John_911 '18

Answers:


276

我通过vboxmanage获取VM的ID来解决。

$ vboxmanage list vms
"my-vm" {c700b8b6-b766-4638-871b-736b44b7db18}

将所需VM的ID(c700…db18字符串)复制到的内容中~/.vagrant/machines/default/virtualbox/id。保存文件,然后运行vagrant up即可使虚拟机正常运行而不必销毁它。


22
您的答案应该被接受!您可以像解决其他问题一样,在不破坏机器的情况下解决问题
Nisic Jovan

17
只是要注意,如果你通过不同的命名你的盒子define(像我一样),那么路径就不会是../default/ ,它的:.vagrant/machines/<box name>/virtualbox/id。#利润!
伊恩·沃恩

7
像魅力一样工作。只是好奇为什么我的VM的ID突然改变了,而这根本是必须的。
克里斯

7
在我的开发环境中,id文件位于同一路径上,但位于项目的根目录上。在项目根目录/.vagrant/machines/default/virtualbox/id
吉列尔莫·

23
对我来说,该.vagrant文件夹不在该文件夹中,~/而在homestead安装文件夹中(即运行该文件夹的位置vagrant up
andrewtweber '16

75

对我而言,该计算机没有在VirtualBox应用程序中显示为活动VM。要解决此问题,我必须这样做:

vagrant global-status

这给了我我需要销毁的机器的ID。使用ID,运行:

vagrant destroy {VM ID}

我必须在sudo中运行该命令才能真正销毁机器。那时,我能够跑步

vagrant up


如果您的宅基地包装盒已损坏(尚未运行),这就是您的答案。在运行VirtualBox的Ubuntu 14.02上进行了验证。
迪伦·皮尔斯

这很有用,因为它向您显示正在运行的无用VM的目录
Mladen Janjetovic

该命令vagrant destroy vm_id必须在同一目录中运行。
Amr


40

从以下消息:

名称为“ vm_name ”的VirtualBox计算机已经存在。请使用其他名称或删除具有现有名称的机器,然后重试。

我从命令行列出了当前正在运行的虚拟机:

VBoxManage list vms

结果:

vm_name ” { 8ba467b7-da96-4f68-9bf8-671dd6f0d007 }

然后继续删除有问题的虚拟机:

VBoxManage unregistervm 8ba467b7-da96-4f68-9bf8-671dd6f0d007 --delete

7
唯一显示如何从命令行删除虚拟机的答案
WorldSEnder '16

1
请注意,如果VirtualBox VM仍在运行,则此方法将无效。必须关闭VM,否则“由于VM已锁定”,命令将失败。
诺亚·萨斯曼

4
是的,该命令将关闭电源。适用于我的内容摘要:vboxmanage列表vms,vboxmanage controlvm <id>电源关闭,vboxmanage unregistervm <id> --delete
dvsander

27

我在聚会上有点晚了,但是对于其他遇到这个问题的人来说,SergioPeluzzi最接近,但是却没有得到这支雪茄:

寻找vb.name = settings [“ name”] =“ homestead”行,并将“ homestead”更改为“ HOMESTEAD”和“vóilá”

该行实际上是:

vb.name = settings["name"] ||= "homestead"

从显示设置[[name]]的位中可以看到,您只需要在Homestead YAML文件中添加一个名称字段,例如

memory: 2048
cpus: 1
provider: virtualbox
name: my-sexy-homestead-box

6
如果您实际上正在安装和使用多个Homestead实例,这是最佳答案。
lintuxvi

1
我同意@lintuxvi,如果您正在使用多个Homestead实例,这是最好的答案
Abdul Rahman A

1
关键是 name: my-sexy-homestead-box -谢谢!
Artistan 2015年

最好的答案远在咫尺!
sdespont


14

我编辑了Homestead.yaml并为其添加了新名称

ip: "192.168.10.10"
memory: 2048
cpus: 4
provider: virtualbox
name: my-new-homestead-box-name

这是正确的方法。homestead.rb配置首先在homestead.yaml中查找名称变量
Sjshovan '19

我试图让另一个宅基地运转。从来没有想过会那么容易。就在Homestead.yaml添加一个名字
APIT约翰·伊斯梅尔

1
这确实应该是公认的答案,并且最容易实现。
卡斯珀·威尔克斯

9

我的项目中有一个旧的.vagrant目录,这会导致错误:)

如果这不能为您解决问题,我建议您打开VirtualBox并删除所有VirtualBox,然后重试。


2
就是这样 完成“无用信息框更新”后,我必须删除该.vagrant目录并重新运行无用信息。
ecairol 2014年

8

我今天有同样的问题。花几个小时找到解决方案。如果由于某种原因找不到退出的虚拟机列表,请输入终端

sudo virtualbox

这将在GUI中运行Virtual Box。您应该看到虚拟机的完整列表,然后可以从中管理它们。键入“ virtualbox”只会显示任何内容。您需要是root(管理员)。

感谢强大的小费。


1
使用OS X上的常规virtualbox应用程序,即使被告知已存在虚拟机,也无法在列表中看到任何虚拟机。然后,我输入sudo virtualbox并看到一堆虚拟机,问题得以解决。谢谢。
Dwayne Charrington

永远不要将sudo与VirtualBox一起使用。您将搞砸权限
Wistar

7

即使运行“宅基地破坏”和“无用破坏”,我仍收到相同的错误消息。和您一样,我使用的是VirtualBox提供程序,vagrant和homestead。这是我所做的:

  1. 打开VirtualBox GUI。我将“ homestead”视为VM,但无法删除,按钮显示为灰色。
  2. 我注销了操作系统,重新登录并重新打开VirtualBox。现在状态已“中止”,我可以删除。
  3. 中有一些残留文件~/VirtualBox\ VMs/homestead,所以我跑了rm -r /Users/gabriel/VirtualBox\ VMs/homestead
  4. 我现在可以运行“宅基地”

6

我打开了virtualBox,然后删除了先前创建的homestead vm。它有帮助。


5

游民清单

无业游民的箱子去除laravel / homestead

流浪者全球地位

流浪者销毁nameOfYourBox

打开您的VirtualBox并删除所有宅基地

无所事事



3

有时,您可能不想删除旧框。昨天可能是旧的Vagrant坏了,我更新了Vagrant和Virtualbox,但是文件夹映射不起作用。我想运行新包装,并出现此错误。

我不想删除旧的盒子(因为我想运行一些备份),但是我想运行新的盒子。该解决方案正在运行VirtualBox,右键单击Homestead计算机,然后选择“设置”,然后将名称从更改homesteadhomestead_old

之后,我可以安装宅基,但拥有这台旧计算机,也可以运行它来进行所需的任何备份。

Virtualbox中的宅基地更改名称


3

如果您是Windows用户,请确保删除C:\Users\<Username>\VirtualBox VMs\homestead文件夹。因为如果仍然有一个名为homestead的文件夹,vagrant up则不会完成的操作


1
就我而言,我有两个文件夹:homestead和homestead-7。删除两者后,问题解决。谢谢!
eleftrik

3

这些都不适合我。我正在使用旧的开发机器

我尝试过:

  1. vagrant global-status>销毁id您不需要的任何东西或匹配冲突的东西

  2. 打开virtualbox并删除+删除不需要或冲突的文件

什么有效:

  • 找到您的~/.vagrant/machines/~/.vagrant.d/boxes文件夹。就我而言,它包含冲突的虚拟机以及一堆旧的剩余虚拟机,由于某些原因,这些步骤1和2并未删除。

  • 清除这些内容后,一切再次正常运行,终于!


如果有冲突的VM可以删除/清除,这是一个很好的答案。现在,该文件夹为~/.vagrant.d/boxes/@ wired00
lintuxvi,

@lintuxvi刚刚添加:)
有线00年

谢谢!为我解决了问题!
VivekP

2

如果要保留机器,而不破坏和重新创建,请按照以下步骤操作,以解决您的问题。(我在OS X El Captain,Vagrant 1.8.1上工作)

在调试模式下运行Homestead

homestead --debug up

在输出中查找类似的内容:

INFO机器:初始化机器:默认INFO机器:-提供者:VagrantPlugins :: ProviderVirtualBox :: Provider INFO机器:-Box:#INFO机器:-数据目录:/Users/YOUR_HOME_DIR/Workspace/Homestead/.vagrant/machines/default/虚拟盒子

Data dir是您感兴趣的路径。

然后 vboxmanage list vms

“宅基” {0e8438b9-4a67-4fb1-80cb-2c62cf04ab5c}“ settler_default_1447385930122_73498_1474294682778_13108” {93ecb93f-f159-4406-a384-5312b4d3ab34}

编辑id文件,在上一条命令中找到的路径中

vi /Users/YOUR_HOME_DIR/Workspace/Homestead/.vagrant/machines/default/virtualbox/id

在这种情况下,将文件内容替换为您要修复的VM的ID。

0e8438b9-4a67-4fb1-80cb-2c62cf04ab5c

现在尝试

homestead up

VM应该开始启动。它可能有效,或者您可能无法使用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

你应该得到类似

主机默认主机名127.0.0.1用户无端口2222
UserKnownHostsFile / dev / null StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile“ /Users/pryznar/.vagrant.d/insecure_private_key”
Identities仅是LogLevel FATAL

编辑IdentityFile文件

/Users/YOUR_HOME_DIR/.vagrant.d/insecure_private_key

检查Homestead.yml

cat /Users/YOUR_HOME_DIR/.homestead/Homestead.yaml

然后将路径复制到密钥下的文件,并从该文件复制私钥

cat ~/.homestead/ssh/id_rsa

最后一步是将/Users/YOUR_HOME_DIR/.vagrant.d/insecure_private_key中的私钥替换为您刚刚复制的私钥

现在再次尝试梯级宅基地,应该可以工作。

homestead up

我收到了一些警告,但到目前为止它没有问题

==>默认值:警告:在命令行界面上使用密码可能不安全。==>默认值:ERROR 1045(28000):对用户'homestead'@'localhost'的访问被拒绝(使用密码:是)SSH命令以非零退出状态响应。Vagrant认为这意味着命令失败。该命令的输出应在上面的日志中。请阅读输出以确定出了什么问题。



1

就我而言,以下文章提供了解决方案。导致此问题的路径/ var / root / VirtualBox VMs /中有一个名为homestead的文件夹。删除此文件夹rm -r homestead后,问题已解决。如果您看不到或无法访问此路径,请在终端窗口中执行以下命令:

$ sudo -s 
$ cd /var/root/VirtualBox\ VMs

并继续删除homestead文件夹。


1

我有以下错误:

错误

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
  • 重新执行vagrant uphomestead文件夹中的命令

就这样,我希望对您有所帮助,这就是我的解决方案。

问候!


0

经过几个小时的故障排除后,其他任何事情都对我无济于事,因为没有人提到这个小细节。

根据安装时的权限,您可能需要以管理员身份运行virtualbox。只是在执行此操作时,我才在虚拟机列表中看到我无所事事的盒子。

然后,我继续homestead从virtualbox 删除我的虚拟机,问题已解决。


0

如果您在Windows中使用宅基地,只需打开Oracle VM VirtualBox并删除homesteadVM。


0

Vagrant依赖VirtualBox(如果这是默认提供程序),因此在配置VM之前先检查现有环境。

它正在执行以下命令:

VBoxManage list vms

当它找到具有相同主机名的VM时,它将失败。

您可以通过以下方式调试它:

vagrant --debug up

找出确切原因。


如果你打算在不同的文件夹中使用多个虚拟机,那么你需要改变你的config.vm.hostname(可能config.vm.provider(name)还有)在Vagrantfile以使其唯一。或者简单地将其删除,因此Vagrant将为每个VM分配一个不同的名称。

如果不是这种情况,只需通过运行以下命令关闭并注销冲突的先前VM:

VBoxManage controlvm NAMEOFVM poweroff
VBoxManage unregistervm NAMEOFVM --delete

然后重新运行您的vagrant up

如果由于目录重命名而失败(因为您错过了--delete),请重命名或删除目标文件夹,例如:

rm -fr ~/"VirtualBox VMs/NAMEOFVM"

然后重试。


该问题可能与以下问题有关:GitHub问题#2969-流浪汉没有检测到先前运行的VM


0

在我的情况下,除了该错误消息外,没有任何迹象表明虚拟机“已经存在”。VirtualBox UI上没有任何内容,“ vboxmanage list vms”返回的内容也没有,通过“ vagrant global-status”没有任何内容,在“ .vagrant.d \ boxes”中不存在,依此类推。我通过在VM VirtualBox Manager中手动创建一个新的同名VM(使用“ new”按钮+接受所有默认设置),然后将其删除(右键单击>“删除”)来解决它。此后,“无所适从”的工作按预期进行。


0

我今天有同样的问题。Windows10。我最近更新了Homestead,所以错误可能是因为此。我想这一切,destroyup,删除文件夹,等等。每当我尝试运行时vagrant up,它都会显示这种错误。解决方案?更新后,我注意到Homestead现在通过项目文件夹名称来命名这些框,并且Homestead.yaml具有所有这些信息。我只是运行Homestead Windows配置,vendor\\bin\\homestead make然后再运行它们vagrant up(在确保所有界面干净之前),瞧瞧这台机器现在正在启动。=)如果需要,请尝试。


0

--force在框后,并在给定名称之前添加。


2
编辑您的答案,以解释您认为此解决方案将起作用,为什么起作用以及如何起作用的原因。同样值得将您的英语正式化(尽管我很欣赏英语可能不是您的母语),尽管我已经对您的答案进行了修改和整理。
大卫说恢复莫妮卡的时间

0

重命名现有的默认VM

免责声明

以下过程将破坏您的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 createdvagrant up抛出此错误

名称为“ Ubuntu-Test”的VirtualBox计算机已经存在。

删除那些僵尸VM
  1. 如果虚拟机正在运行,请先将其停止:(vboxmanage shutdown <VMName>这里的名称是Ubuntu-Test
  2. 通过运行获取ID vboxmanage list vms
  3. 删除它: vboxmanage unregistervm <Id> --delete
  4. 现在可以使用以下方式重新创建您的VM vagrant up
  5. 使用vagrant global-status --prune,您的新名字出现了

0

对我来说,id文件存在于以下位置。D:\ drupalvm.vagrant \ machines \ drupalvm \ virtualbox


0

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”文件,然后运行以上命令。


0

您只需在提供程序之后立即将密钥添加namehomestead.yaml文件中,如下所示:

name: name_of_you_machine

这对我行得通。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.