chefでrpmファイルからのインストールが失敗する
chefでrpmファイルで配布されているファイルからブツをインストール。
ファイルが幾つかあるので、attributeにリストを書いて、それでループしてcookbook_fileで転送してpackageでインストールというレシピを記述。ところがいざ走らせてみるとファイルは転送してくれるものの、rpmの実行がエラーになってる。
エラーはこんな感じ。
Generated at 2015-02-27 13:38:52 +0900 Chef::Exceptions::Exec: package[hoge] (hoge::default line 13) had an error: Chef::Exceptions::Exec: rpm -i /tmp/hoge.rpm returned 1, expected 0 /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.16.4/lib/chef/mixin/command.rb:158:in `handle_command_failures' /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.16.4/lib/chef/mixin/command.rb:104:in `run_command_and_return_stdout_stderr' /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.16.4/lib/chef/mixin/command.rb:79:in `run_command' /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.16.4/lib/chef/mixin/command.rb:171:in `run_command_with_systems_locale' /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.16.4/lib/chef/provider/package/rpm.rb:95:in `install_package' /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.16.4/lib/chef/provider/package.rb:82:in `block in action_install' /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.16.4/lib/chef/mixin/why_run.rb:52:in `call'
レシピの文法的なエラーじゃなくて、rpmを実行した結果、戻り値がエラーになっている。なんでだ。
--testをつけて実行してみる
rpmだと--testをつけるとテストしてくれるとのこと。じゃあってことでやってみる。
# rpm -i --test /tmp/hoge.rpm #
なにもでない。正常なのかな。
--testをつけないでやってみる
rpm -i /tmp/hoge.rpm エラー: アーカイブの伸長に失敗: ファイル /usr/lib/hoge/fuga.so.12.1;54eff700: cpio: read
ん、エラーになるな。
再度ダウンロード
もう一回ダウンロードしてknifeで実行。こんどはちゃんと動作しました。