5

ネイティブパッケージがインストールされる前にgemのインストールが行われるため、gemのインストールが失敗するのに、シェフのレシピにfoggemをインストールしようとしています。

package "libxslt-dev"
package "libxml2-dev"

chef_gem "fog"

これが出力です

[Thu, 14 Mar 2013 13:04:30 +0000] INFO: Processing chef_gem[fog] action install (ebs4000::update_volumes line 23)
[Thu, 14 Mar 2013 13:04:52 +0000] ERROR: Running exception handlers
[Thu, 14 Mar 2013 13:04:52 +0000] FATAL: Saving node information to /var/cache/chef/failed-run-data.json
[Thu, 14 Mar 2013 13:04:52 +0000] ERROR: Exception handlers complete
[Thu, 14 Mar 2013 13:04:52 +0000] ERROR: Gem::Installer::ExtensionBuildError: chef_gem[fog] (cookbook::recipe line 4) had an error: Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.8 extconf.rb
checking for libxml/parser.h... no
-----
libxml2 is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    ...
    --with-pkg-config
    --without-pkg-config


Gem files will remain installed in /var/lib/gems/1.8/gems/nokogiri-1.5.6 for inspection.
Results logged to /var/lib/gems/1.8/gems/nokogiri-1.5.6/ext/nokogiri/gem_make.out

chefリソースのnotify属性を認識していますが、これを適切に実行できます。

では、実際に実行順序を強制して、最初にネイティブパッケージをインストールし、次に同じ実行でgemをインストールする方法を教えてください。

注:新しいノードに対して完全に自動化する必要があるため、パッケージの手動インストールはオプションではありません。

4

2 に答える 2

7

ここで説明されているように、リソース コレクション フェーズの開始時に依存関係をインストールしてみませんか: OPSCODE wiki: リソース コレクションからリソースを実行する

したがって、レシピは次のようになります。

xsltdev = package "libxslt-dev" do
   action :nothing
end

xmldev = package "libxml2-dev" do
   action :nothing
end

xsltdev.run_action(:install)
xmldev.run_action(:install)

chef_gem "fog"
于 2013-03-14T20:08:07.360 に答える
0

あなたはすでにそれをやっているようです。レシピは順番に実行されるので、うまくいくはずです。

ログでは、Chef がインストールを試みた時点から何が起こったかのみを示していますfog。その前に lib パッケージのインストールが行われないことを確認しましたか? パッケージ名が間違っているか、事前にパッケージ マネージャーのキャッシュを更新する必要がある可能性があります。

于 2013-03-15T02:23:51.230 に答える