Vagrant 有没有办法导入指定版本的本地 box 文件?

Dom*_*nck 9 vagrant

我正在使用版本化的盒子,但没有使用 Vagrant Cloud(我有一个自定义的盒子主机)。下载版本化的盒子效果很好。

但是,当我在本地开发我的盒子的新版本时,我不想每次想要升级 Vagrant 中加载的盒子的版本时都必须经历上传/下载周期。换句话说,我想运行vagrant box add,同时指定一个较新的版本和一个本地文件。

vagrant box add似乎有一个选项--box-version,但这是为了限制正在下载的盒子的版本,而不是用于指定要添加的盒子的版本。无论如何尝试指定 box-version 会导致:

您使用直接的 box 文件路径指定了 box 版本约束。Box 版本约束仅适用于来自 Vagrant Cloud 或自定义 Box 主机的 Box。请删除版本限制,然后重试。

但我并不是要限制我添加的内容;我正在尝试指定. 任何形式的框添加似乎都将版本设置为 0。有什么方法可以解决这个问题并告诉 Vagrant 我要添加什么版本?

小智 6

基于此答案,要为本地框指定版本,您需要创建一个metadata.json.

文件的最小内容如下所示:

{
    "name": "USERNAME/BOXNAME",
    "versions": [{
        "version": "X.Y.Z",
        "providers": [{
            "url": "package.box"
        }]
    }]
}
Run Code Online (Sandbox Code Playgroud)

哪里package.box是从的相对路径metadata.json

之后,您可以简单地运行vagrant box add metadata.json以添加一个带有版本的新框。

警告:

Vagrant 将metadata.jsonurl存储在~/.vagrant.d/boxes/FULLBOXNAME/metadata_url文件中。因此,请注意名称,您不能使用来自不同来源的相同名称。