【问题标题】:Vagrant Meta Data is CorruptVagrant 元数据已损坏
【发布时间】:2015-08-01 14:13:27
【问题描述】:

希望有人可以在这里提供帮助。我正在尝试对自托管的 vagrant 框进行版本控制,因此无需使用 Vagrant Cloud。

我创建了以下元数据文件:

{
  "description": "How about this",
  "name": "Graphite",
  "versions": [
    {
      "version": "1.8",
      "providers": [
        {
          "name": "virtualbox",
          "url": "http://desktopenvironments/Graphite/Graphite_1.8.box"
        }
      ]
    }
  ]
}

这直接取自 vagrant(有点缺乏)文档,位于:http://docs.vagrantup.com/v2/boxes/format.html

运行 vagrant add 时(直接从磁盘获取包含此文件的 box 文件)我得到:

The metadata associated with the box 'graphite' appears corrupted.
This is most often caused by a disk issue or system crash. Please
remove the box, re-add it, and try again.

任何关于为什么会发生这种情况的帮助将不胜感激。

【问题讨论】:

  • 我认为你错过了我正在做的事情。我已经打包了自己的盒子并创建了一个 metadata.json 文件。该文件存在于盒子和用于版本控制的盒子存根中。在我自己编写的盒子存根上添加流浪者时,我收到了这个错误。

标签: vagrant vagrant-windows


【解决方案1】:

正在从我编写的 c# 应用程序生成我的元数据文件,使用 UTF8 进行文本编码。这还不够。您需要使用没有 BOM 的 UTF8。 一旦字节顺序标记被删除,它就可以工作 100 秒。

var settings = new JsonSerializerSettings() { ContractResolver = new LowercaseContractResolver() };
string json = JsonConvert.SerializeObject(metadata, Formatting.None, settings);
var utf8WithoutBom = new System.Text.UTF8Encoding(false);
using (var sink = new StreamWriter(outputFilePath, false, utf8WithoutBom))
{
    sink.Write(json);
}

【讨论】:

    猜你喜欢
    • 2014-09-03
    • 2018-11-21
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    相关资源
    最近更新 更多