vagrant 添加带版本号的 box

https://www.jianshu.com/p/12cf1ecb224b

第三种好用 
 阅读约 8 分钟

前言

众所周知,vagrant 添加 box 需要访问国外的服务器,然而国外的服务器总是那么的慢慢慢.....但是那个速度真的是不想吐槽。所以就有了本地添加 box 的需求,所以就有了以下的内容。

为什么一定要强调版本号呢?如果使用过 Homestead 的朋友们,那么你就会知道其中的酸爽。

以下内容完全从零开始的,如果只是特定问题,可直接跳过会的内容,从问题出看起。

目标

该文章最终的目标是添加一个带版本号的box,效果如下:

准备工作

  • 初始化一个虚拟机
  • 获取对应的 box 下载地址
  • 使用下载工具下载该 box

初始化一个虚拟机

在 https://app.vagrantup.com 中有很多的 box 可供我们下载使用,你可以搜索你想要的 box,我这里使用的是 centos/7

$ vagrant init centos/7

在执行上面的目录处会多以下文件:

Vagrantfile 就是 vagrant 的配置文件,我们也可以直接配置该文件对虚拟机进行初始化。

获取对应的 box 下载地址

$ vagrant up

以上命令用于启动虚拟机,如果你的PC上没有安装过 centos/7(可以通过 vagrant box list命令查看是否安装过),就会从 https://vagrantcloud.com 去下载 centos/7 ,如果有 centos/7 就会从本机获取。

执行完上面的命令后,会出现以下内容:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'centos/7' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
==> default: Loading metadata for box 'centos/7'
    default: URL: https://vagrantcloud.com/centos/7
==> default: Adding box 'centos/7' (v1809.01) for provider: virtualbox
    default: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/1809.01/providers/virtualbox.box
    default: Download redirected to host: cloud.centos.org
    default:

注意上面的 default: Downloading ... 后面紧跟着有一个 url 地址,那个就是 centos/7 box的下载地址。

注意着的版本号为: v1809.01,下面我们会用到。

使用下载工具下载该 box

作者这里使用的是:迅雷极速版。当然你们也可以使用其他的下载工具。

添加 vagrant box

常规方案(不推荐)

vagrant的命令中,我们可以知道vagrant box add [options] <name, url, or path>这个一个命令。我们

进入到 virtualbox.box 下载目录,并执行以下内容:

vagrant box add centos/7 ./virtualbox.box

然后我们使用以下命令查看:

$ vagrant box list
centos/7          (virtualbox, 0)

我们可以看到 centos/7 已经添加到了本地,那么这个有什么问题呢?

问题

注意到 (virtualbox, 0),这个 0 就是指的版本号,这跟它真是的版本号不符。

那么我们该怎么做才能添加正确的版本号呢?有两种方案:

  • 从上面的基础上进行修改;
  • 通过 metadata.json 方式(推荐)。

正确的添加方案

根据 常规方案 修改(不推荐)

作者使用的是 win10操作系统,对使用 Mac OS的朋友们的情况不是很清楚。

打开 资源管理器 (俗称我的电脑),在你的 C 盘下的用户名下有一个 .vagrant.d/boxes 目录,添加的 box 会加载到这来,结果如下:

这里的 centos-VAGRANTSLASH-7 就是我们刚才添加的 box,打开目录:

这里的 0 就是版本号,我将它修改为: 1809.01 (上面有记载),然后使用命令查看:

$ vagrant box list
centos/7          (virtualbox, 1809.01)

注意到上面的版本号,就由原来的 0 变成了现在的 1809.01

通过 metadata.json 方式(推荐)

如果执行过 常规方案 的,使用以下方式清除 box

$ vagrant box remove centos/7

首先进入到 box 的下载目录,新建一个文件 metadata.json

{
    "name": "centos/7",
    "versions": [{
        "version": "1809.01",
        "providers": [{
            "name": "virtualbox",
            "url": "./virtualbox.box"
        }]
    }]
}
  • name添加的box名字
  • version:版本号
  • providers.name:虚拟主机类型
  • providers.url:box地址

metadata.json准备完成后,执行以下命令添加:

$ vagrant box add metadata.json

输出以下结果:

==> box: Loading metadata for box 'metadata.json'
    box: URL: file://D:/vagrant/box/metadata.json
==> box: Adding box 'centos/7' (v1809.01) for provider: virtualbox
    box: Downloading: ./centos7.box
    box:
==> box: Successfully added box 'centos/7' (v1809.01) for 'virtualbox'!

查看添加的 box 列表:

$ vagrant box list
centos/7          (virtualbox, 1809.01)

总结

就此,整篇文档就到此结束了,我们总结下要领:

  • 使用常规方法添加时,需要正确的找到 .vagrant.d/boxes ,并确认刚才添加的 box,最后进行版本修改;
  • 使用metadata.json方式,注意整个 metadata.json 中不能有注释的内容,注意各个参数的准确性。

[转帖]vagrant 添加带版本号的 box的更多相关文章

  1. vagrant 添加带版本号的 box

    众所周知,vagrant添加box的时候要从外网下载,那速度...(说多了都是泪),所以只好用下载工具下载到本地之后再添加. 如何搭建 homestead:https://laravelacademy ...

  2. 百度地图API 批量添加 带检索功能的信息窗口

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 烂泥:puppet添加带密码的用户

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前一篇文章,我们介绍了有关puppet3.7的安装与配置,这篇文章我们再来介绍下如何利用puppet添加带密码的用户. 要通过puppet添加带密码的用 ...

  4. 【maven】之打包不带版本号的问题

    今天在写maven项目的时候发现打包没有带版本号,只有包名 百思不得其解,我翻看之前的项目发现并没有这种情况,最后看了一下文档 发现是自己在build中写了fileName  导致的!删除自定义的fi ...

  5. vue-cli3 每次打包都改变css img js文件名,还有自带版本号

    let Version = new Date().getTime(); css: { // 是否使用css分离插件 ExtractTextPlugin extract: { //一种方式,打包后的cs ...

  6. 利用gradle添加构建版本号

    在java的程序中,貌似都没有这个构建版本号的概念,用的诸如eclipse, idea和android studio的IDE也没有直接提供构建版本号的选项.不过我却想在android程序的版本号当中添 ...

  7. 在word2010中添加带滚动条的文本框

    由于文件内容过长,为了加强文章的可读性,可以添加一个带滚动条的文本框,既能使文章看起来干净整洁,同时也极大的提高了文章的可读性. 我这里对在word2010中文本框带滚动条作个介绍: 1. 打开wor ...

  8. Kubernetes添加带Quota限额的CephFS StorageClass

    1. 在Ceph上为Kubernetes创建一个文件系统 # ceph osd pool create cephfs_data # ceph osd pool create cephfs_metada ...

  9. 百度API的经历,怎样为多个点添加带检索功能的信息窗口

    不管我们要做什么样的效果,APIKey(密钥)都是不可缺少的要件,所以我们需要先去百度申请我们的APIKey!!! 伸手党,请直接到页面底部获取完整代码! 最近做一个门店查询的内容展示,考虑到用户直观 ...

随机推荐

  1. 电商系统中SPU、SKU的区别

    SPU = Standard Product Unit(标准产品单位) SPU是商品信息聚合的最小单位,是一组可复用.易检索的标准化信息的集合,该集合描述了一个产品的特性.SPU多见于后台商品的管理. ...

  2. Spring Cloud 微服务实战笔记

    Spring Cloud 微服务实战笔记 微服务知识 传统开发所有业务逻辑都在一个应用中, 开发,测试,部署随着需求增加会不断为单个项目增加不同业务模块:前端展现也不局限于html视图模板的形式,后端 ...

  3. brew安装mongodb报错Error: No available formula with the name 'mongodb'

    原因:MongoDB不再是开源的了,并且已经从Homebrew中移除 #43770 设定:  $ brew tap mongodb/brew 安装: $ brew install mongodb-co ...

  4. 【Cookie】java.lang.IllegalArgumentException An invalid character [32] was present in the Cookie value

    创建时间:6.30 java.lang.IllegalArgumentException: An invalid character [32] was present in the Cookie va ...

  5. css 高度随宽度比例变化

    [方案一:padding实现] 原理: 一个元素的 padding,如果值是一个百分比,那这个百分比是相对于其父元素的宽度而言的,padding-bottom 也是如此. 使用 padding-bot ...

  6. reactnative遇到的问题总结

    1.View中出现文本报错,View等标签中不能出现字符串文本,字符串文本需要包在Text中,遇到如下错误 下面是问题代码: let rightTitle = this.props.rightTitl ...

  7. 出现 sudo: unable to resolve host XXX 信息解决办法

    Ubuntu环境,  每次执行sudo 就出现这个警告讯息:sudo: unable to resolve host XXX虽然sudo 还是可以正常执行,是机器在反解上的问题, 所以就直接从/etc ...

  8. csv与openpyxl函数

    csv 与openpyxl函数 csv函数 常用的存储数据的方式有两种--存储成csv格式文件.存储成Excel文件(不是复制黏贴的那种) 前面,我有讲到json是特殊的字符串.其实,csv也是一种字 ...

  9. Layui 新标签打开

    原文:https://blog.csdn.net/sr_www/article/details/81394365 layuiAdmin 后台管理模板 iframe版 在新标签中打开网页 / 在ifra ...

  10. document.write和innerHTML的区别?

    document.write是直接重写整个页面,innerHTML针对所属DOM节点进行重写,效率优于document.write.