您的位置:首页 > 其它

使用Vagrant安装的box镜像都放在了哪里?可以更改嘛?

2015-10-27 16:24 483 查看
box存放在哪里?

谈到Vagrang的一些基本内容,不过如果磁盘规划不好,而使用的boxes越来越多,悲剧的发现磁盘没空间了。那么Vagrant的boxes存放在哪里的呢?

翻看文档,发现boxes默认是放在~/.vagrant.d/boxes下面的,如果根目录空间不大,很快没空间了。怎么办?

修改box存放路径

赶紧SO和Google,还真发现两篇文章(一,二)讲这玩意,就简要说一下步骤好了

copy ~/.vagrant.d/下面的目录到新目录

cp ~/.vagrant.d/   /path/to/vagrant_home/


设置环境变量
$ grep 'VAGR' ~/.bashrc
export VAGRANT_HOME='/path/to/vagrant_home'


就这样,重新登录shell后,boxes的存放目录就在 /path/to/vagrant_home/boxes 下面了

仅仅如此?

这个也太简单了吧,也太神秘了吧,但是为什么呢? Vagrant是开源的,窥窥源代码去

当我们运行"vagrant box list"的时候,该命令可以列出所有boxes的名字。既然boxes存放地址已经知道了,查看存放路径可以发现,"vagrant box list"仅仅把该路径的文件夹的名字显示出来。可以试试在目录新建一个空文件夹,然后运行"vagrant
box list"看看

既然这样,我们搜一下源代码看看

$ find . -name *.rb |xargs grep "\.vagrant\.d"
./embedded/gems/gems/vagrant-1.0.5/lib/vagrant/environment.rb:    DEFAULT_HOME = "~/.vagrant.d"
....


哈,第一条就是,赶紧看看啥玩意

def setup_home_path
@home_path = Pathname.new(File.expand_path(@home_path ||
ENV["VAGRANT_HOME"] ||
DEFAULT_HOME))


在代码里发现变量DEFAULT_HOME只在一个地方用到,虽然ruby语法不懂,但是看这代码还是很好理解的。这也是为什么我们设置了环境变量VAGRANT_HOME后,"vagrant box list"命令首先查找VAGRANT_HOME的路径,如果没有找到才查找DEFAULT_HOME的路径。

终于真相大白了,其实也不是很神秘的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: