1

有谁知道为什么以下代码会导致错误:“riak-1.4.2”的未定义方法'tar':String

remote_file "/vagrant/usr/src/#{node.default['riak']['version'].tar.gz}" do
  source "#{node.default['riak']['url']}"
  mode 0755
  notifies :run, "bash[extract_riak]", :immediately
end

bash "extract_riak" do 
  code <<-EOH
    # Following is the line which causes the error.
    /bin/tar xzf /vagrant/usr/src/#{node.default['riak']['version']}.tar.gz -C /vagrant/usr/src/#{node.default['riak']['version']}
  EOH
  notifies :run, "bash[make_riak]", :immediately
end
4

3 回答 3

1

此行引发错误:

remote_file "/vagrant/usr/src/#{node.default['riak']['version'].tar.gz}"

.tar.gz应该在括号之外,如下所示:

remote_file "/vagrant/usr/src/#{node.default['riak']['version']}.tar.gz"

括号之间的所有内容都作为 ruby​​ 代码执行,结果将其放在字符串中。node.default['riak']['version'].tar.gz是一个函数调用链,包括调用一个不存在的targz最后的函数。这些是文件名的一部分,应该放在括号之外。

附带说明一下,您可能希望用于node[:attribute]获取属性,并且仅用于node.default[:attribute]设置属性

于 2013-10-16T21:13:38.193 回答
0

我推荐ark 食谱作为处理档案的更好选择。

以下示例配方:

include_recipe "ark"

ark "riak" do
  url "http://s3.amazonaws.com/downloads.basho.com/riak/1.4/1.4.2/riak-1.4.2.tar.gz"
  version "1.4.2"
end

将在“/usr/local/riak-1.4.2”目录下安装riak。

最后,还有一本 riak 食谱,据说也可以从源代码安装。

于 2013-10-16T22:35:16.937 回答
-1

代替:

#{node.default['riak']['version']}.tar.gz

你要:

#{node.default['riak']['version'].tar.gz}
于 2013-10-16T20:47:25.630 回答