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找不到它。 有两种方法来检索实际的盒子文件:
-
从vagrantcloud.com下载.box文件
- find你感兴趣的地图集上的框。 例如, https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
- 用
vagrantcloud.com
replace域名。 所以https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1变成https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box 。 - 将
/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 - 保存.box文件
- 如你所愿,使用.box,例如,自己托pipe,并指向
config.vm.box_url
到URL。 要么
-
从Vagrant直接获取.box
这需要你修改ruby源码以防止Vagrant在成功下载后删除这个盒子。
- find您的Vagrant安装目录中的box_add.rb文件。 在我的系统上,它位于
/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
- findbox_add函数。 在
box_add
函数中,有一个块读取:
确保#确定删除临时文件后,我们添加它,#除非我们被打断,在这种情况下,我们保持它#所以我们可以恢复下载。 如果!@download_interrupted @ logger.debug(“删除临时框:#{box_url}”)开始box_url.delete如果box_url救援Errno :: ENOENT#没有什么大不了,temp文件可能实际上不存在end end
- 注释这个块。
- 使用
vagrant add box <boxname>
添加另一个框vagrant add box <boxname>
。 - 等待它下载。 您可以将它保存在
~/.vagrant.d/tmp/
目录下,保存为boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
文件。 - 重命名文件更有用的东西。 例如,
mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box
。
- find您的Vagrant安装目录中的box_add.rb文件。 在我的系统上,它位于
你为什么要这个?
对我来说,这对于检索.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