流浪者“未创建虚拟机。”尝试从现有 VM 创建框时
Posted
技术标签:
【中文标题】流浪者“未创建虚拟机。”尝试从现有 VM 创建框时【英文标题】:Vagrant " VM not created." when trying to create box from existing VM 【发布时间】:2013-07-25 02:24:03 【问题描述】:我导入了precision32 box,然后在VM 上安装了一些包和其他数据。我的计划是然后将其重新打包到一个盒子中,以在共享时节省复杂的配置。
但是。
vagrant package --base dev-vm --output /box/vm.box
总是返回
[dev-vm] VM not created . Moving on
我的目录结构是:
-dev-vm
--.vagrant
--Logs
--box.ovf
--box-disk1.vmdk
--dev-vm_13345342.vbpx
--metadata.json
--Vagrantfile
我
set VAGRANT_LOG=debug
其中没有显示关于正在发生的事情的额外信息。
使用 Cygwin 的 Windows 7
更新:
export VAGRANT_LOG=debug
供 Cygwin 设置调试日志。
然后我得到
DEBUG subprocess: Waiting for process to exit. Remaining to timeout: 32000
DEBUG subprocess: Exit status: 0
INFO warden: Calling action: #<Vagrant::Action::Builtin::Call:0x2abb800>
INFO runner: Running action: #<Vagrant::Action::Builder:0x2695920>
INFO warden: Calling action: #<VagrantPlugins::ProviderVirtualBox::Action::Created:0x267c078>
INFO runner: Running action: #<Vagrant::Action::Warden:0x2ac6c48>
INFO warden: Calling action: #<VagrantPlugins::ProviderVirtualBox::Action::MessageNotCreated:0x2ac6c00>
INFO interface: info: VM not created. Moving on...
【问题讨论】:
当我打包一个 VirtualBox 配置的盒子时,我必须使用带有时间码的特定盒子名称,例如lucid_1372711888
。
@bfitzpatrick 。就是这样。所以: vagrant package --base dev-vm_13743534 --output /box/vm.box 工作。您想将此添加为答案以便我接受吗?
【参考方案1】:
如果您在包含 Vagrantfile 的文件夹中,您也可以简单地运行:
vagrant package --output your-box-name.box
下图显示了使用此命令创建的 .box 文件的内容:
【讨论】:
如果您这样做,则创建的 .box 仅包含 .vmdk 文件——它缺少所有配置内容(如果您使用 --vagrantfile 选项打包,则缺少.ovf 和 Vagrantfile)。跨度> @foobarbecue - 我过去曾使用过该命令,它打包了所有内容。我在答案中添加了未打包 .box 的屏幕截图。 我觉得这应该是正确的答案,因为备用 - 使用“vboxmanage list vms”需要用户知道列表匹配中产生的名称。此方法将根据 Vagrant 文件所在的路径隐式生成输出。【参考方案2】:当您打包一个盒子时,盒子名称必须是您可以从 VirtualBox 获得的特定机器名称(例如lucid_1372711888
)。只需在 cmd 中执行以下命令:
vboxmanage list vms
请注意,“vboxmanage”应事先添加到 PATH 变量中。请参阅here 如何做到这一点。
还要注意虚拟机名称不能包含空格。否则它不会被“vagrant package”命令识别。例如:
vagrant package --base win7_vbox_base --output win7_base.box #CORRECT
------------------------------------------------------------------------
vagrant package --base win7 vbox base --output win7_base.box #INCORRECT
【讨论】:
您可以通过:$ VBoxManage list vms
找到盒子名称。另请注意,这在 Vagrant 1.4.2 中被破坏:groups.google.com/forum/#!msg/vagrant-up/HNXKTBv0-Jw/…
请记住,对于 Windows 程序(由于我认为它起源于 Linux)来说,它不寻常地区分大小写,因此如果大小写不完全匹配,您可能会收到错误,即:lucid_1372711888
!= @ 987654328@
注意盒子名称区分大小写
@79E09796 评论很重要。 "ubuntu" != "Ubuntu" 如果这是你的盒子名称。我刚遇到这个问题。 :) 如果你双引号你的 boxname vagrant package --base "Ubuntu 14.04.3"
也可以使用空格
请注意,如果您的虚拟机名称包含空格,您可以使用“vboxmanage list vms”命令打印的 UUID 而不是文本虚拟机名称。这避免了重命名机器实例的需要!以上是关于流浪者“未创建虚拟机。”尝试从现有 VM 创建框时的主要内容,如果未能解决你的问题,请参考以下文章