本月我使用 vagrant box add laravel / homestead 下载了Homestead box thrid time。我目前无法访问快速互联网,因此每次下载都非常烦人。有没有办法再次使用下载的软件包,并将本地软件包包含在vagrant中,如果保留项目或同步位置,则无关紧要。
如果重要的话我在Ubuntu机器上。
更新:我需要下载的Homestead盒子,这样如果我的机器出现故障或者我必须在没有/慢速互联网连接的地方安装它,我可以在本地进行。
答案 0 :(得分:14)
哦,这很容易。
要将当前安装的邮箱打包回.box文件(同时将其保留在系统上),只需使用vagrant box list
查找邮箱名称,提供商和版本。
然后使用vagrant box repackage <name> <provider> <version>
并将其打包到名为package.box的文件中。
希望这有帮助!
答案 1 :(得分:14)
更好的方法是:
Vagrant init
vagrant package --output mynew.box
您将把盒子打包到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