簡體   English   中英

廚師食譜編譯錯誤

[英]Chef Recipe Compile Error

有誰知道為什么以下代碼會導致錯誤: “ 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

這行引發錯誤:

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]設置屬性。

我推薦方舟食譜作為處理檔案的更好選擇。

以下示例配方:

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食譜 ,據報道也可以從源代碼中安裝。

代替:

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

你要:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM