厨师:没有名称为 "httpd" 的可用配方

Chef: No available formula with the name "httpd"

我正在学习 chef,但在尝试安装 httpd 包时卡在了这里。我有一个在 Mac OS 上安装 httpd 包的简单方法。我安装了 ChefDK。

webserver.rb

package 'httpd' 

当我 运行 chef-apply webserver.rb 时,它抛出错误:

    Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '1'
---- Begin output of brew info --json=v1 httpd ----
STDOUT: 
STDERR: Error: No available formula with the name "httpd"
---- End output of brew info --json=v1 httpd ----
Ran brew info --json=v1 httpd returned 1

Resource Declaration:
---------------------
# In webserver.rb

  1: package 'httpd'

Compiled Resource:
------------------
# Declared in webserver.rb:1:in `run_chef_recipe'

homebrew_package("httpd") do
  action [:install]
  retries 0
  retry_delay 2
  default_guard_interpreter :default
  package_name "httpd"
  declared_type :package
  cookbook_name "(chef-apply cookbook)"
  recipe_name "(chef-apply recipe)"
end

谁能告诉我我错过了什么。谢谢

那么让我们逐一了解您正在做的事情:

chef-apply 采用单个 Chef 配方并在本地运行。这意味着发生的一切都在您的 Mac 笔记本电脑上。

此配方使用 package 资源来安装名为 'httpd' 的东西。 Chef 为 package 资源提供了一堆提供程序,因此在 Ubuntu 上它使用 APT,在 CentOS 上它使用 YUM,在 OS X 上它使用 Homebrew(即brew install).

在安装包之前,Chef 会检查它是否已安装并收集有关包的其他详细信息。对于 Homebrew,它为此使用 brew info。因此,您最终使用命令 brew info httpd,提供或采用 JSON 输出格式参数以使其更易于解析。 Homebrew 没有名为 'httpd' 的包(公式),所以它 returns 一个错误,然后 Chef 提出了这个错误。

在更深层次上,Homebrew 不打包 Apache(我假设您正在尝试安装),因为它默认包含在 OS X 中。即使打包了,大多数打包系统也称它为 apache2。只有RHEL/CentOS个衍生品仍然调用包httpd