Шеф-повар: Нет формулы с именем httpd.

Я учусь на шеф-повара, и я застрял здесь, пытаясь установить пакет httpd. У меня есть простой рецепт установки пакета httpd в Mac OS. Я установил 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

Может кто-нибудь сказать мне, что я здесь пропустил. Спасибо.


person imechemi    schedule 12.12.2015    source источник


Ответы (1)


Итак, давайте пройдемся по каждой части того, что вы делаете:

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', поэтому он возвращает ошибку, которую Chef затем поднимает по цепочке.

На более глубоком уровне Homebrew не упаковывает Apache (то, что я предполагаю, вы пытаетесь установить), потому что он по умолчанию входит в OS X. Даже если это так, большинство систем упаковки называют его apache2. Только производные от RHEL / CentOS по-прежнему называют пакет httpd.

person coderanger    schedule 12.12.2015
comment
спасибо @coderanger, руководство шеф-повара было непонятным. Я предположил, что это абстрагировано для всех платформ. - person imechemi; 13.12.2015
comment
Уровень абстракции - это только то, какую базовую систему пакетов использовать, а не имя / использование пакетов в целом. Вы можете использовать httpd кулинарную книгу сообщества, которая предоставляет более полную абстракцию для установки Apache2 в моей системе. - person coderanger; 13.12.2015