2011-03-17 2 views
15

방금 ​​Vagrant + Chef를 발견했으며 간단한 레서피를 만들어 노드에 여러 패키지를 설치하려고합니다. 이 같은 일이 (내가 완전히 새로운 TU 루비 해요) 일 수 있다고 생각 :Vagrant + Chef를 통해 여러 패키지 설치

# (From cookbooks/MY_COOCKBOOK/recipes/default.rb) 
# Install required packages 
%w{build-essential libncurses5-dev openssl libssl-dev}.each do |pkg| 
    package pkg do 
    action :install 
    end 
end 

그러나 이것은 다음과 같은 오류와 함께 실패합니다

[default] [Thu, 17 Mar 2011 06:24:27 -0700] INFO: Installing package[libssl-dev] version 0.9.8k-7ubuntu8.5 
: stdout 
[default] /usr/lib/ruby/gems/1.8/gems/chef-0.9.12/bin/../lib/chef/mixin/command.rb:184:in `handle_command_failures': stderr 
[default] : : stderr 
[default] apt-get -q -y install libssl-dev=0.9.8k-7ubuntu8.5 returned 100, expected 0: stderr 
[default] (: stderr 
[default] Chef::Exceptions::Exec: stderr 
[default]) 
: stderr 
[default] from /usr/lib/ruby/gems/1.8/gems/chef-0.9.12/bin/../lib/chef/mixin/command.rb:131:in `run_command' 
    from /usr/lib/ruby/gems/1.8/gems/chef-0.9.12/bin/../lib/chef/mixin/command.rb:199:in `run_command_with_systems_locale' 
    from /usr/lib/ruby/gems/1.8/gems/chef-0.9.12/bin/../lib/chef/provider/package/apt.rb:68:in `install_package' 
    from /usr/lib/ruby/gems/1.8/gems/chef-0.9.12/bin/../lib/chef/provider/package.rb:60:in `action_install' 
[...] 

: stderr 
[default] [Thu, 17 Mar 2011 06:24:34 -0700] ERROR: package[libssl-dev] (/tmp/vagrant-chef/cookbooks-0/erlang-src/recipes/default.rb:22:in `from_file') had an error: 
apt-get -q -y install libssl-dev=0.9.8k-7ubuntu8.5 returned 100, expected 0 
/usr/lib/ruby/gems/1.8/gems/chef-0.9.12/bin/../lib/chef/mixin/command.rb:184:in `handle_command_failures' 
/usr/lib/ruby/gems/1.8/gems/chef-0.9.12/bin/../lib/chef/mixin/command.rb:131:in `run_command' 
/usr/lib/ruby/gems/1.8/gems/chef-0.9.12/bin/../lib/chef/mixin/command.rb:199:in `run_command_with_systems_locale' 
/usr/lib/ruby/gems/1.8/gems/chef-0.9.12/bin/../lib/chef/provider/package/apt.rb:68:in `install_package' 
/usr/lib/ruby/gems/1.8/gems/chef-0.9.12/bin/../lib/chef/provider/package.rb:60:in `action_install' 

내가 기본 뭔가를 인상 누락 한 여기 ...

답변

17

필요한 패키지를 설치하기 전에 apt-get 업데이트를 실행하는 Vagrantfile에서 "apt"레시피가 누락되었습니다. 그래서 위의 내용은 정확합니다.

4

나중에이 참조를 나중에 참조 할 수 있도록 추가하십시오.

execute "update package index" do 
    command "apt-get update" 
    ignore_failure true 
    action :nothing 
end.run_action(:run) 

을 그리고 그것을 잘 작동합니다 : 당신이 이제까지 당신이 어떤 package 명령을 호출하기 전에 apt-get update을 실행해야합니다 상황으로 실행하는 경우, 당신은이 조각에 의지 할 수 있습니다.

+0

일반적으로 cookbook을 리소스에 대해 run_action을 호출하지 않고 사용하는 경우 필요하지 않습니다. 패키지 리소스를 사용하기 전에 apt 요리 책의 기본 레서피를 포함하기 만하면 [apt-get update 실행] (https : // github .com/opscode-cookbooks/apt/blob/master/recipes/default.rb # L29). – bschlueter