2013-03-14 13 views
5

Sto cercando di installare la gemma nebbia in una ricetta cuoco se si verifica l'installazione gemma prima che i pacchetti nativi vengono installati in modo che il montaggio gemma riesceInstallazione di un gioiello dopo pacchetti estensione nativa durante l'esecuzione del cuoco

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

chef_gem "fog" 

Questo è l'uscita

[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 

Sono consapevole dell'attributo di notifica delle risorse dello chef ma riesco comunque a farlo funzionare correttamente.

Quindi, come posso forzare effettivamente l'ordine di esecuzione per installare prima i pacchetti nativi e quindi il gioiello nella stessa esecuzione.

Nota: l'installazione manuale dei pacchetti non è un'opzione, poiché vogliamo che sia completamente automatizzata per i nuovi nodi.

risposta

7

Perché non provare a installare le dipendenze, all'inizio della fase di raccolta delle risorse, come detto qui: OPSCODE wiki: Run Resources from the Resource Collection

Quindi la vostra ricetta sarà simile:

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" 
+0

Grazie, ha fatto il trucco! – vervas

+0

È inoltre possibile installare un elenco di pacchetti con: '% w {libxslt-dev libxml2-dev} .each do | pkg | p = pacchetto pkg fare azione: niente fine p.run_action (: installare) FINE' – Brett

0

Sembra che si sta già facendo quella. Le ricette vengono eseguite in ordine, quindi dovresti essere bravo.

Nei registri, viene mostrato solo ciò che è successo dal punto in cui Chef tenta di installare fog. Hai verificato che l'installazione dei pacchetti lib non si presenta prima? È possibile che i nomi dei pacchetti siano stati errati o che sia necessario aggiornare prima la cache del gestore pacchetti.

+0

non ho incluso il registro prima che, poiché i comandi del pacchetto non sono eseguiti finora. Per me sembra che la gemma sia stata installata nella fase di raccolta delle risorse mentre l'installazione del pacchetto nella fase di esecuzione successiva, quindi questo è il motivo per cui il problema si verifica IMHO. – vervas

Problemi correlati