Vagrant在哪里下载.box文件?

Cal*_*eng 259 virtualbox virtual-machine vagrant

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

vagrant box add lucid32 http://files.vagrantup.com/lucid32.box
Run Code Online (Sandbox Code Playgroud)

lucid32.box下载完成后,我无法在文件系统上找到该文件.

man*_*lds 385

文档所述,框存储在:

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

  • 您还可以使用env var VAGRANT_HOME指定.vagrant.d的位置,如VAGRANT_HOME = D:\.vagrant.d(是的,它也适用于Windows). (33认同)
  • 在Windows上的`C:\ Users\{username}\.vagrant.d\boxes`中,我发现只有`.vmdk`文件而不是`.box` !! (5认同)

Arb*_*zar 75

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

~/.vagrant.d/boxes
Run Code Online (Sandbox Code Playgroud)

和不成功的盒子位于:

~/.vagrant.d/tmp
Run Code Online (Sandbox Code Playgroud)

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

C:\Users\%userprofile%\.vagrant.d\boxes
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助.谢谢

  • 不知道为什么这是低估的.有关不成功下载目标的信息很有用. (10认同)
  • 这个答案适用于您真正关心硬盘空间的情况。 (2认同)

sut*_*her 44

要更改路径,可以设置名为VAGRANT_HOME的环境变量的新路径

export VAGRANT_HOME=my/new/path/goes/here/
Run Code Online (Sandbox Code Playgroud)

如果你想在另一个硬盘驱动器上安装那些流浪汉图像,那也许很好.

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


Luk*_*son 20

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

~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Run Code Online (Sandbox Code Playgroud)

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

~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f
Run Code Online (Sandbox Code Playgroud)

据我所知,这个文件永远不会与*.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函数中,有一个块读取:

      确保#确保我们在添加后删除临时文件,#除非我们被中断,在这种情况下我们将其保留#所以我们可以稍后恢复下载.如果!@download_interrupted @ logger.debug("删除临时框:#{box_url}")开始box_url.delete如果box_url rescue Errno :: ENOENT#没什么大不了的,临时文件可能实际上并不存在

    3. 评论这个街区.
    4. 使用添加另一个框vagrant add box <boxname>.
    5. 等待它下载.您可以将其~/.vagrant.d/tmp/作为boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX文件保存在目录中.
    6. 将文件重命名为更有用的内容.例如,mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box.

你为什么要这个?

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

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


小智 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

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


小智 6

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

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