【问题标题】:Error resolving cookbook解决食谱时出错
【发布时间】:2015-01-25 20:57:54
【问题描述】:

我经历了许多类似的话题,但没有一个能回答我的问题。我有mysql 4.1.2 recipe。当我在 opsworks 中运行它时,我给了我这个错误。当我在本地 ubuntu 中运行类似的食谱时,它运行良好。我已经对依赖项的版本号进行了一些重大调整,但仍然没有解决方案。这个问题的原因可能是什么?
我的CookBook repo 在 github

    ================================================================================
    Error Resolving Cookbooks for Run List:
    ================================================================================


    Missing Cookbooks:
    ------------------
    Could not satisfy version constraints for: mysql

【问题讨论】:

    标签: chef-infra chef-recipe aws-opsworks cookbook


    【解决方案1】:

    您的database 食谱版本需要mysql >= 5.0.0,但您拥有4.1.2

    【讨论】:

    • 请告诉我你是怎么知道的?这真的很有帮助!
    • 我在您的代码中搜索了“depends 'mysql'”等所有行,以找出未满足的约束。
    • 使用 grep ?命令是什么..我正在使用 grep -rcl "depends \'mysql\'" 但它对我没有用。
    • 我只是在 github 上做的,以避免在本地克隆你的 repo。 github.com/gitsubham/chef-repo/…
    【解决方案2】:

    除了@coderanger 给你的解决方案,避免类似问题的好习惯 这和逃避依赖地狱这是使用某种食谱 manager(食谱的依赖管理器)。

    有几个选项,例如 BerkshelfLibrarian-chef, Berkshelf 更受欢迎的地方,它甚至被包含在 Chef Development Kit,所以如果你使用它 不需要单独安装。

    所以基本上这背后的想法是有一个地方来定义你的魔法 在你所有的食谱中,默认的一本是Chef Supermarket 或者,如果您愿意,可以使用自定义位置或 git repo 作为源。

    定义来源后,您只需要定义您想要的食谱(使用或 没有)您想要的所需版本或标签,食谱管理器将解决 所有已定义食谱的依赖项,它将为您安装它们, 如果你愿意,你也可以出售它们。

    有关如何使用这些工具的更多信息,请访问官方网站:

    【讨论】:

    • @ratasheep,我还是要提一下依赖的版本。我遇到的问题是这些依赖项的版本。另外,当我将它与 Aws - opsworks 一起使用时,berkshelf 是否有效,因为我只需要使用它。
    • 如果您使用最新的 OpsWorks 堆栈,它包括对 Berkshelf 的支持。
    • 好的。 thanx .. 但同样的问题“我仍然必须提及依赖项的版本。我遇到的问题是这些依赖项的版本。”
    • @coderanger,请为我澄清一个疑问。例如:我有一个食谱 A,它取决于食谱 B 和食谱 C。现在这个食谱 B 取决于食谱 D,而食谱 C 取决于食谱 E。如果我在我的 berksfile 中只提到食谱 B 和 C,它会自动管理吗配方 D 和 E。我是否也必须在 berksfile 中提及他们的名字?
    • @Subham Tripathi 它会自动解决依赖关系,因此您无需指定确切的依赖关系,只需指定顶级食谱即可。在这个你的例子中,只添加配方 A 并且它的所有依赖项(食谱 B、C、D 和 E)都将被解析和安装。关于版本,如果您不需要任何特定版本的顶级食谱,您也不需要指定版本,在这种情况下,Berkshelf 将使用最新的。
    【解决方案3】:

    另一个地方是你的环境文件cookbook_versions属性。如果此处指定了食谱版本,则可能与其他版本规范冲突。

    https://docs.chef.io/environments.html

    【讨论】:

    • 你好我的朋友和救世主!这个答案有助于未来几年!当我的 deps 是 >= 1.0,而我的 env pinning 是 = 1.1 时,我总是落入这个陷阱。如果 1.2 存在,Berks 将获取它,但由于 env pinnings,chef 不会运行。谢谢!
    • 我从遥远的 2019 年开始确认,来自 wisbucky 和 ​​VladFr 的这两个 cmets 是 Chef 应该在他们的文档中添加的内容。确实很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 2019-07-17
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多