原文地址

从 Vagrant 1.5 版本起,box 开始支持版本。这运行创建 box 的人提交更新,使用 box 的人检查更新、更新 box 并查看变更记录。

对于 Vagrant 新手,box 版本并不重要,建议先去学习其他知识点。但是如果你在团队中使用 Vagrant 并且计划创建自己的 box,版本非常重要。幸运的是,Vagrant 内置版本控制功能易于使用,并很好地适应 Vagrant 工作流程。

本章讲解如何使用带版本的 box。如果想了解如何创建带版本的 box,请参考 创建基础 box

1. 查看版本并更新

vagrant box list 只显示 box 的安装版本。如果查看 box 的可用版本,需要在 HashiCorp’s Vagrant Cloud 上查找 box。可用直接通过 URL https://vagrantcloud.com/$USER/$BOX 查找 box。例如,对于 hashicorp/precise64 这个 box,可用在 https://vagrantcloud.com/hashicorp/precise64 获取信息。

可用通过 vagrant box outdated 命令检查 box 是否已经过时。这可以检查当前 Vagrant 环境中的 box 是否过时以及系统上安装的任何其他 box。

可用通过 vagrant box update 命令更新 box。这会下载并安装新 box。这不会更新运行中的 Vagrant 环境。如果 Vagrant 环境已经在运行,必须销毁并重新创建它才能获取 box 中的更新,update 命令只是在本地下载这些更新。

2. 版本约束

可以通过在 Vagrantfile 中指定 config.vm.box_version 选项,限制 Vagrant 环境使用特定的一个或多个版本的 box。

如果未指定此选项,则相当于指定“>=0”的约束,始终使用最新版本。

box 版本配置可以是特定版本或几个版本。约束可以是以下任意组合:=X>X<X>=X<=X~> X。可以通过用逗号分隔多个约束来组合多个约束。所有的约束条件应该是自我解释的,除了 ~>,称为“悲观约束”。例如:~> 1.0 相当于 > = 1.0< 2.0~> 1.1.5 相当于 > = 1.1.5,<1.2.0

可以选择合适的版本处理方式。但是,公共目录中的许多 box 都遵循 语义版本控制。基本上,只有第一个数字(“主要版本”)打破向后兼容性。就 Vagrant box 而言,这意味着任何运行在 box “1.1.5”版本中的软件都应该在“1.2”和“1.4.5”中工作,但是“2.0”可能会引起重大变化。按照这个约定,最好的约束是 ~> 1.0,因为无论该版本在哪个范围内,都知道它是安全的。

注意,虽然 语义版本控制 规范允许超过三个点,并且支持 pre-release 及 beta 版本,但 Vagrant 框必须是 X.Y.Z 格式,其中 X,Y 和 Z 都是正整数。

3. 自动更新检查

使用 Vagrantfile,还可以配置 Vagrant 在任何 vagrant up 期间自动检查更新。这是默认启用的,但可以在 Vagrantfile 中通过 config.vm.box_check_update=false 轻松禁用。

启用此功能后,Vagrant 将在每次 vagrant 启动时检查更新情况,不在从头开始创建机器是检查,还在恢复运行时以及重启时检查更新。

如果发现更新,Vagrant 会向用户发出警告,让他们知道有更新可用。用户可以选择忽略该警告,或者可以通过运行 vagrant box update 来更新该 box。

Vagrant 不能也不会自动下载更新的机器并更新机器,因为机器可能相对较大,更新机器需要销毁机器并重新创建机器,这会导致重要数据丢失。因此,此过程是手动的,用户必须手动输入命令才能执行此操作。

4. 修剪旧版本

Vagrant 不会自动修剪旧版本,因为无法确认其是否可能被其他 Vagrant 环境使用。因为 box 可能很大,所以可能需要一段时间后通过使用 vagrant box remove 主动修剪它们。可以通过 vagrant box list 查看所有安装的 box。

另一种选择是使用 vagrant box prune 命令删除所有已经过期并且当前未使用的已安装 box。

Vagrant 手册之 box - 版本的更多相关文章

  1. Vagrant 手册之 box - box 的文件格式

    原文地址 过去,box 只是 VirtualBox 导出的 tar 文件.由于 Vagrant 现在支持多个 provider 和版本控制,box 文件稍微复杂一些. 用于 Vagrant 1.0.x ...

  2. Vagrant 手册之 box - 创建基础 box

    原文地址 有一种特殊的 box 被称为"base box".这些 box 包含 Vagrant 运作所需的最低限度,通常不是对现有的 Vagrant 环境("base b ...

  3. Vagrant 手册之 box - 概述

    原文地址 box 是 Vagrant 环境中使用的包格式.box 可以在 Vagrant 支持的所有平台上被任何人使用,从而提供相同的工作环境. vagrant box 工具提供了管理 box 的所有 ...

  4. Vagrant 手册之 box - box 的信息格式

    原文地址 创建 Vagrant 的 box 时,可以提供在运行 vagrant box list -i 时展示的与用户相关的其他信息.例如,可以打包 box,以包含有关该 box 的作者和网站信息: ...

  5. Vagrant 手册之 Vagrantfile - 配置版本

    原文地址 配置版本是 Vagrant 1.1+(引入了大量新功能和配置选项) 能够与 Vagrant 1.0.x Vagrantfiles 保持向后兼容的机制. 现在运行 vagrant init 时 ...

  6. Vagrant 手册之 Vagrantfile - 机器设置 config.vm

    原文地址 配置的命名空间:config.vm config.vm 中的设置修改 Vagrant 管理的机器的配置. 1. 可用的设置项 config.vm.boot_timeout Vagrant 等 ...

  7. Gpload安装手册(Linux版本)

    Gpload安装手册(Linux版本) 一.python 2.7版本 Linux系统默认是安装python2.7的,如果没有需要手动安装(python版本要求2.4.4以上): 通过命令:python ...

  8. Vagrant 无法校验手动下载的 Homestead Box 版本

    起因 4年前电脑,配置不太好了,现有的 Homestead 运行起来太吃内存.在修改了 Homestead.yaml 文件里 memory 选项的内存配置为 1024 后,应用最新配置重启失败. 索性 ...

  9. Vagrant 手册之 Vagrantfile - 最低版本

    原文地址 可以在 Vagrantfile 中指定一组 Vagrant 的版本,以强制人们使用带有 Vagrantfile 的特定版本的 Vagrant.这可以帮助解决使用带有 Vagrantfile ...

随机推荐

  1. vps配置ipv6地址

    1.修改配置文件 vim /etc/network/interfaces 2.添加以下内容 auto he-ipv6 iface he-ipv6 inet6 v4tunnel address 2001 ...

  2. 1.Dockerfile

    1.docker build docker build 这个动作有一个context 上下文的概念 docker build -f /path/to/a/Dockerfile .这个动作 通过 -f ...

  3. Reactjs 列表优化的一些心得

    前言 在应用开发中,列表是我们使用频率非常高的一种展现形式,在reactjs项目中更是如此.无处不在的使用更是需要我们小心触发性能瓶颈的深水炸弹. 下面就我最近的总结出的几点心得分享给大家,有什么问题 ...

  4. 问题 A: 组合数

    问题 A: 组合数 时间限制: 1 Sec  内存限制: 128 MB提交: 1975  解决: 150[提交] [状态] [命题人:jsu_admin] 题目描述 求组合数C(N,M),以及C(N, ...

  5. C++多态下的访问修饰符

    C++多态下的访问修饰符 先上代码: class Parent { public: virtual void showMsg() { cout << "Parent showMs ...

  6. 2019-3-1-C#-json-转-xml-字符串

    title author date CreateTime categories C# json 转 xml 字符串 lindexi 2019-03-01 09:20:24 +0800 2019-1-1 ...

  7. MacBook Pro修改hosts

    访达前往:/etc/hosts 将hosts复制到桌面修改保存 替换 附Windows hosts文件位置: C:\windows\System32\drivers\etc

  8. python的type和object

    在python中一切皆对象,这是个用python的人都知道的概念,以int举例,比如a=2,type下: 发现他的type是int,在python中type就是类,所以a是类int的一个对象,实例是类 ...

  9. git 操作遇到的问题与解决方法

    一.使用git在本地创建一个项目的过程,Git 上传本地文件到github $ makdir ~/hello-world //创建一个项目hello-world $ cd ~/hello-world ...

  10. jmeter性能工具 使用手册(一)

    前置条件: 在jmeter官网下载jmter 安装包 电脑有java 环境 使用步骤: 打开jmeter 2.新建线程 Test plan--->add-->theads(users)-- ...