为什么 java 食谱依赖于这么多其他食谱?

Why is the java cookbook depending on so many other cookbooks?

我正在尝试 运行 open-source Java cookbook 使用 chef-solo,虽然它不需要任何其他食谱,但厨师一直说 运行 这需要一本食谱一个不见了。首先它要求我安装 apt,然后是 homebrew,然后是 _build_essentials_。这似乎是一个永无止境的食谱清单。我做错了什么?

这就是我运行编写食谱的方式:

chef-solo -c solo.rb -o recipe[java] 

其中 solo.rb 是一个包含食谱文件夹路径的配置文件。

当我尝试 运行 WAS cookbook.

时也会发生同样的事情

简而言之:Chef(还)不支持 conditional dependencies。这就是为什么所有提供 可能 使用的资源或食谱的食谱都需要声明为依赖项。

Java 说明书使用许多其他说明书中的资源在不同的系统上安装 Java,例如 Windows、Linux、MacOS 等。因此,它使得使用其他提供资源的食谱,例如在 Windows 下安装软件包,添加 APT 存储库等

为了允许食谱包含食谱或使用来自另一本食谱的资源(例如 apt_repository),必须将此资源指定为依赖项,以便在执行食谱之前加载它(例如 Java)。否则这个resource/recipe不会被Chef知道。

所以所有这些食谱都将在 Chef 运行 期间加载,但不会执行它们的代码。虽然这感觉有点烦人,尤其是。在您的情况下,当您显然手动下载食谱时,当您使用 Berkshelf 进行依赖项解析时,这并没有那么令人不安。强烈推荐。