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

执行以下命令后.box文件会发生什么?

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

下载完成后,我无法在文件系统上findlucid32.box文件。

正如文档中提到的 ,框存储在:

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

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

 ~/.vagrant.d/boxes 

不成功的箱子位于:

 ~/.vagrant.d/tmp 

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

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

希望这会有所帮助。 谢谢

要更改path,可以设置一个名为VAGRANT_HOME的环境variables的新path

 export VAGRANT_HOME=my/new/path/goes/here/ 

如果你想在另一个硬盘上拥有那些stream浪汉的图片,这也许很不错。

更多信息,请参阅文档: http : //docs.vagrantup.com/v2/other/environmental-variables.html

一旦下载和安装完成,实际的.box文件将被Vagrant删除。 正如其他答案中所述,在下载时,.box文件存储为:

 ~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

文件名是“box”后面跟着一个40字节的hex散列。 我系统上的一个临时文件是:

 ~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f 

据我所知,这个文件永远不会以*.box扩展名保存,这就解释了为什么上面的search找不到它。 有两种方法来检索实际的盒子文件:

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

    1. find你感兴趣的地图集上的框。 例如, https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
    2. vagrantcloud.comreplace域名。 所以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,例如,自己托pipe,并指向config.vm.box_url到URL。 要么
  2. 从Vagrant直接获取.box

    这需要你修改ruby源码以防止Vagrant在成功下载后删除这个盒子。

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

      确保#确定删除临时文件后,我们添加它,#除非我们被打断,在这种情况下,我们保持它#所以我们可以恢复下载。 如果!@download_interrupted @ logger.debug(“删除临时框:#{box_url}”)开始box_url.delete如果box_url救援Errno :: ENOENT#没有什么大不了,temp文件可能实际上不存在end end

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

你为什么要这个?

对我来说,这对于检索.box文件非常有用,因为它可以托pipe在本地,快速的基础架构上,而不是从HashiCorp的Atlas框架目录或其他框提供者下载 。

这真的应该是默认的Vagrantfunction的一部分,因为它有一个非常明确的用例。

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

只需访问https://atlas.hashicorp.com/boxes/search ,search您想要下载的框。 注意框的URL,例如:

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

那么你可以使用这样的URL下载这个盒子:

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

我尝试并成功下载了我需要的所有框。 希望有所帮助。

在Windows上,位置可以在这里find。 我没有在网上find这方面的文件,这对我来说并不是很明显:

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