Vagrant 本地 Box 指定版本号

我的做法是, 先去 官网 搜索需要的包, 然后点击进入详细页面.

找到对应的 Vagrantfile 描述, 拷贝之. 例如 laravel/homestead 包, 那么拷贝

Vagrant.configure("2") do |config|
  config.vm.box = "laravel/homestead"
end

将上面拷贝好的内容放在 Vagrantfile 文件中, 在该文件所在文件夹内执行 vagrant up.

之后控制台就会开始准备下载, 下载前会打印出下载地址, 打印出下载地址后, 就可以直接 Ctrl+c 中断命令行下载了.

ps: 网上有人提供了一个 油猴 的脚本, 说是可以在网页上增加一个下载按钮, 自行测试: https://github.com/everyx/vagrant-box-download-helper-everyx.user.js

我们拷贝一下下载链接 https://vagrantcloud.com/laravel/boxes/homestead/versions/5.2.0/providers/virtualbox.box 使用迅雷下载一下即可, 很快的.

下载后将其剪切到与 Vagrantfile 相同目录, 同时创建文件名为 metadata.json 的文件:

{
    "name": "laravel/homestead",
    "versions": [{
        "version": "5.2.0",
        "providers": [{
            "name": "virtualbox",
            "url": "file:///vagrant_box/laravel_homestead/virtualbox.box"
        }]
    }]
}

其中 name 为包名,
version 为对应的版本号,
providers 中 name 为可用的虚拟机类型, 有 virtualbox, vmware, libvirt… 看官方支持哪一个, 默认是 virtualbox, 方便快捷且免费.
providers 中 url 内容很重要, 是当前 box 在本地的存储路径, 我是 macos 路径为 /vagrant_box/laravel_homestead/virtualbox.box,
使用文件加载协议为 file:// 表示本地文件, 所以看似 file:/// 有三个 /, 实际上是 // + /, 没有敲错.

之后添加该包不再使用 vagrant box add virtualbox.box, 而是使用 vagrant box add metadata.json.

参考:

vagrant 本地添加 box 支持带版本号: https://www.cnblogs.com/fengchi/p/6879389.html

vagrant 添加本地 box 安装 laravel homestead: https://zhuanlan.zhihu.com/p/25338468

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.