285

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

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

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

4

8 回答 8

423

文档中所述,盒子存储在:

  • Mac OS X 和 Linux:~/.vagrant.d/boxes
  • 视窗:C:/Users/USERNAME/.vagrant.d/boxes
于 2012-04-19T10:25:00.070 回答
80

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

~/.vagrant.d/boxes

和不成功的盒子位于:

~/.vagrant.d/tmp

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

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

希望这会有所帮助。谢谢

于 2015-01-24T13:33:31.570 回答
49

要更改路径,您可以为环境变量设置一个新路径,名为:VAGRANT_HOME

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

如果您想在另一个 HDD 上拥有这些 vagrant-Images,那可能会很好。

文档中的更多信息:http: //docs.vagrantup.com/v2/other/environmental-variables.html

于 2015-02-06T10:42:27.043 回答
20

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

~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

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

~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f

据我所知,此文件从未使用*.box扩展名保存,这解释了为什么上面的搜索未能找到它。有两种方法可以检索实际的 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

    这需要你修改 ruby​​ 源,以防止 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函数中,有一个块读取:

      确保 # 确保我们在添加临时文件后删除它, # 除非我们被打断,在这种情况下,我们将其保留在 # 以便我们稍后可以恢复下载。if !@download_interrupted @logger.debug("Deleting temporary box: #{box_url}") begin box_url.delete if box_url rescue Errno::ENOENT # 没什么大不了的,临时文件可能实际上不存在 end end

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

你为什么要这个?

对我来说,这对于检索 .box 文件很有用,因此它可以托管在本地、快速的基础设施上,而不是从HashiCorp 的 Atlas box 目录其他 box 提供商下载。

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

于 2015-05-14T23:09:50.957 回答
15

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

只需转到https://atlas.hashicorp.com/boxes/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 _ _

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

于 2015-06-03T09:11:01.653 回答
6

在 Windows 上,可以在此处找到该位置。我没有在互联网上找到任何文档,这对我来说并不是很明显:

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

于 2014-11-11T18:59:27.080 回答
3

此外

Mac:
~/.vagrant.d/

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

您必须删除 VirtualBox/OtherVMprovider 中的文件才能重新开始。

于 2018-05-15T13:09:12.187 回答
0

在带有Vagrant 2.2.2的Windows 10上,设置环境变量将确保将盒子下载到为.VAGRANT_HOMEVAGRANT_HOME

在我的情况下,我设置VAGRANT_HOMEe:\vagrant_home,并且这些盒子存储在e:\vagrant_home\boxes.

这对我有用。

那是存放箱子的地方。正在 Virtual Box 中配置的文件夹中创建虚拟机。要设置 VirtualBox VM 存储文件夹,请转到:VirtualBox GUI --> File --> Preferences --> General --> Default Machine Folder.

于 2018-12-10T02:29:58.177 回答