8

我试图运行 Vagrant 机器,但由于我安装了 Vagrant 1.0.1 而遇到错误。然后我卸载并安装了 Vagrant 1.2.2。但是,当我运行 vagrant up 时,出现错误。

$ vagrant up

Bringing machine 'default' up with 'virtualbox' provider...
The box 'precise32' is still stored on disk in the Vagrant 1.0.x
format. This box must be upgraded in order to work properly with
this version of Vagrant.

我尝试了 vagrant init 但也遇到了错误。

$ vagrant init precise32 http://files.vagrantup.com/precise32.box

`Vagrantfile` already exists in this directory. Remove it before
running `vagrant init`.

如何将我的精确 32 盒子升级到新版本的 Vagrant?

4

3 回答 3

15

vagrant box repackage precise32 virtualbox
于 2013-07-02T22:43:00.920 回答
0

vagrant 目录结构的格式在这些版本之间发生了变化。您添加一个名为 virtualbox 的子目录,然后在其中添加一个 metadata.json 文件,其中包含类似“{“provider”:“virtualbox”}'的内容。

这是一个带有 bash 脚本的要点,您可以使用它来自动执行此操作,并将更改打印到屏幕上。

wget -q -O - https://gist.github.com/xrd/6055536/raw/8398322313a7e8a60ee8f9ad4d6a87d50ee55b8d/gistfile1.txt | bash

如果您希望恢复到已有的内容,则输出实际上是可运行的以反转更改。

这在一篇博客文章中有详细说明,可能会有所帮助:

将 vagrant box 升级到 1.2

于 2013-09-15T05:26:08.883 回答
0

根据文档,使用 vagrant 1.1+ 打包的盒子有一个名为 metadata.json 的额外文件。

尝试在内容metadta.json下手动创建一个文件~/.vagrant.d/boxes/precise32/virtualbox

{"provider": "virtualbox"}

再试一次,看看你是否还有问题。

如果没有帮助,我能想到的唯一方法是删除该框并使用新的 vagrant 版本再次添加它。您不必销毁这些盒子,即使它们不再与 vagrant 一起使用,您仍然可以使用VBoxManageVirtualBox GUI 来操作它们。

于 2013-07-02T23:45:14.607 回答