Vagrant将其.box文件下载到哪里?


267

执行以下命令后,.box文件会怎样?

vagrant box add lucid32 http://files.vagrantup.com/lucid32.box

lucid32.box下载完成后,我在文件系统上找不到文件。


我想我完全不明白你的意思了,因为我想到的第一件事是sudo find / -name lucid32.box
不合理的约翰

确实是我所做的,但是我一定会丢失一些东西,因为我无法lucid32.box使用此确切的命令找到它……
Calvin Cheng

3
该名称可能不存在。诸如通配符搜索*.box?(顺便说一句,扩展名不是.vbox吗?)
非理性的约翰

是的,你是对的。搜索应针对*.vboxnot *.box。谜团已揭开。:-)您想输入一个答案以便我接受吗?谢谢!
Calvin Cheng

1
@CalvinCheng:我认为您误以为它只是tar存档中的.vbox映像。它确实是tar归档文件,但是包含box-disk1.vmdk,box.ovf和Vagrantfile等文件。我不完全知道这些文件是如何用来创建VirtualBox使用的文件的,但是如果您打开VB的.vbox文件,您会看到它只是XML。我假设Vagrant将其文件(也是二进制和XML文件,加上Vagrantfile)转换为VirtualBox使用的XML和二进制文件。但是,如果打开二进制文件,您会发现它们是不同的,因此,解压缩和重命名不是一个简单的问题。
iconoclast 2012年

Answers:


397

docs所述,框存储在:

  • Mac OS X和Linux: ~/.vagrant.d/boxes
  • 视窗: C:/Users/USERNAME/.vagrant.d/boxes

1
啊。感谢您的澄清。我一定是盲目的错过了文档中的解释。
Calvin Cheng

1
@manojlds:请参阅我对以下问题的评论:.vbox文件。它本身不是VM,而只是XML文件。
iconoclast 2012年

Windows OS上的相同位置?
阿鲁达

34
您也可以使用env var VAGRANT_HOME来指定.vagrant.d的位置,如VAGRANT_HOME = D:\。vagrant.d一样(是的,它也适用于Windows)。
Sven 2014年

5
C:\Users\{username}\.vagrant.d\boxesWindows上,我发现只有.vmdk文件而不是.box
Bilal 2015年

76

在Mac / Linux系统上,成功下载的框位于:

~/.vagrant.d/boxes

和不成功的盒子位于:

~/.vagrant.d/tmp

在Windows系统上,它位于Users文件夹下:

C:\Users\%userprofile%\.vagrant.d\boxes

希望这会有所帮助。谢谢


10
不知道为什么这被否决了。有关下载失败目的地的信息很有用。
亚历克斯·考文垂

~/.vagrant.d/boxes从不存储.box文件本身,仅存储其内容。 ~/.vagrant/tmp用于在下载时临时存储.box,但在Vagrant中安装后将其删除。
卢克·彼得森

第三行(适用于Windows)应为%userprofile%\.vagrant.d\boxes
J. Scott Elblein'1

这个答案是针对您实际上关心硬盘空间的情况。
kiltek19年


20

.box下载和安装完毕后,Vagrant会删除实际文件。如其他答案所述,在下载时,.box文件存储为:

~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

文件名是“ box”,后跟一个40字节的十六进制哈希。例如,我系统上的一个临时文件是:

~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f

据我所知,此文件从不保存*.box扩展名,这解释了为什么上面的搜索找不到该文件。有两种方法可以检索实际的盒子文件:

  1. 从vagrantcloud.com下载.box文件

    1. 在地图集上找到您感兴趣的框。例如, https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
    2. 用替换域名vagrantcloud.com。因此,https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1 变为https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
    3. 添加/providers/virtualbox.box到该URL的末尾。因此 https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1变成https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
    4. 保存.box文件
    5. 您可以根据需要使用.box,例如,自己托管它并指向config.vm.box_urlURL。要么
  2. 直接从Vagrant获取.box

    这要求您修改红宝石源,以防止Vagrant在成功下载后删除该框。

    1. 在您的Vagrant安装目录中找到box_add.rb文件。在我的系统上,它位于/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
    2. 找到box_add函数。在该box_add函数中,有一个块读取:

      确保#确保在添加临时文件后将其删除,#除非被打断,否则将其保留在#左右,以便稍后可以恢复下载。如果!

    3. 注释掉该块。
    4. 使用添加另一个框vagrant add box <boxname>
    5. 等待下载。您可以观看它~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX文件形式保存在目录中。
    6. 将文件重命名为更有用的名称。例如mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box

你为什么要这个?

对我而言,这对于检索.box文件很有用,因此可以将其托管在本地快速基础架构上,而不是从HashiCorp的Atlas盒子目录其他盒子提供商处下载

这确实应该是默认Vagrant功能的一部分,因为它具有非常明确的用例。


是否可以喜欢,压缩或压缩boxs文件夹中的子文件夹来创建可安装的box文件?
ThorSummoner

@ThorSummoner是的,但是您也可以在这种情况下让Vagrant处理它,例如,通过vagrant package命令:docs.vagrantup.com/v2/cli/package.html
卢克·彼得森

15

@Luke Peterson:有一种更简单的方法来获取.box文件。

只需转到https://atlas.hashicorp.com/boxes/search,搜索您想要下载的框。注意该框的URL,例如:

https://atlas.hashicorp.com/ ubuntu / boxes / trusty64 / versions / 20150530.0.1

然后,您可以使用以下网址下载此框:

https://vagrantcloud.com/ ubuntu / boxes / trusty64 / versions / 20150530.0.1 /providers/virtualbox.box

我尝试并成功下载了所有需要的盒子。希望对您有所帮助。


这是一个很棒的发现!谢谢。;)
卢克·彼得森

链接已损坏-需要替换为:app.vagrantup.com
RtmY

6

在Windows上,可以在此处找到位置。我没有在互联网上找到任何与此相关的文档,而且这对我来说并不是立即显而易见的:

C:\Users\\{username}\\.vagrant.d\boxes


那%userprofile%\。vagrant.d \ boxes可以工作吗?%userprofile%扩展为c:\ users \ {username}
TamusJRoyce

2

此外

Mac:
~/.vagrant.d/

Windows:
C:\Users\%userprofile%\.vagrant.d\boxes

您必须删除VirtualBox / OtherVMprovider中的文件才能进行干净的开始。


0

在具有Vagrant 2.2.2的Windows 10上,设置环境变量将确保将文件夹下载到为指定的文件夹的子文件夹中。VAGRANT_HOMEVAGRANT_HOME

在我的情况下,我设置VAGRANT_HOMEe:\vagrant_home,然后将这些框存储在下e:\vagrant_home\boxes

这对我有用。

那是盒子的存放地。该虚拟机被虚拟框配置的文件夹中创建。要设置VirtualBox VM存储文件夹,请转到:VirtualBox GUI --> File --> Preferences --> General --> Default Machine Folder

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.