如何复制流浪盒再次使用

时间:2014-10-18 01:40:51

标签: ubuntu laravel vagrant

本月我使用 vagrant box add laravel / homestead 下载了Homestead box thrid time。我目前无法访问快速互联网,因此每次下载都非常烦人。有没有办法再次使用下载的软件包,并将本地软件包包含在vagrant中,如果保留项目或同步位置,则无关紧要。

如果重要的话我在Ubuntu机器上。

更新:我需要下载的Homestead盒子,这样如果我的机器出现故障或者我必须在没有/慢速互联网连接的地方安装它,我可以在本地进行。

3 个答案:

答案 0 :(得分:14)

哦,这很容易。

要将当前安装的邮箱打包回.box文件(同时将其保留在系统上),只需使用vagrant box list查找邮箱名称,提供商和版本。

然后使用vagrant box repackage <name> <provider> <version>并将其打包到名为package.box的文件中。

希望这有帮助!

答案 1 :(得分:14)

更好的方法是:

  1. 只需转到您完成Vagrant init
  2. 的目录
  3. 执行vagrant package --output mynew.box
  4. 您将把盒子打包到mynew.box文件中,您甚至可以将其复制并与其他开发者共享。在我认为你的网速较慢的情况下,这非常有用。

答案 2 :(得分:2)

只是为了补充@thecodethinker回答。

当我应用建议的命令时:

vagrant box list

vagrant box repackage <name> <provider> <version>

发生了以下情况:

Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'laravel/homestead' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0.4.0
==> default: Loading metadata for box 'laravel/homestead'
default: URL: https://atlas.hashicorp.com/laravel/homestead
==> default: Adding box 'laravel/homestead' (v0.5.0) for provider: virtualbox
default: Downloading: https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.5.0/providers/virtualbox.box

正如您所看到的,它无法识别package.box并且正在尝试从互联网上下载。如果仔细观察,可以看到正在寻找box version >= 0.4.0

这是vagrant box list

的结果

laravel/homestead (virtualbox, 0)

因为手动添加了该框。框元数据不可用,默认情况下会将版本设置为0。

要解决此问题,请创建metadata.json

{
"name": "laravel/homestead",
    "versions": [{
        "version": "0.4.0",
        "providers": [{
            "name": "virtualbox",
            "url": "file://package.box"
        }]
    }]
}

因为现在我们有适当的元数据,你可以这样做:

vagrant box add metadata.json