2

我尝试使用 Chef Solo 和 Berkshelf 设置一个 vagrant vm。我想使用Maven食谱。“maven”依赖于“java”和“java_ark”(包含在“java”食谱中)。它们都是由 Opscode 创建的。

但每次我得到这个错误:

NoMethodError

-------------

undefined method `[]' for nil:NilClass




Cookbook Trace:
---------------
  /tmp/vagrant-chef-1/chef-solo-1/cookbooks/java/recipes/default.rb:21:in `from_file'
  /tmp/vagrant-chef-1/chef-solo-1/cookbooks/platform-slayer/recipes/slayer_worker.rb:2:in `from_file'


Relevant File Content:
----------------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/java/recipes/default.rb:

 14:  # Unless required by applicable law or agreed to in writing, software
 15:  # distributed under the License is distributed on an "AS IS" BASIS,
 16:  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 17:  # See the License for the specific language governing permissions and
 18:  # limitations under the License.
 19:  #
 20:  
 21>> include_recipe "java::#{node['java']['install_flavor']}"
 22:  
 23:  # Purge the deprecated Sun Java packages if remove_deprecated_packages is true
 24:  %w[sun-java6-jdk sun-java6-bin sun-java6-jre].each do |pkg|
 25:    package pkg do
 26:      action :purge
 27:      only_if { node['java']['remove_deprecated_packages'] }
 28:    end
 29:  end
 30:

有谁知道这个问题?如果您需要更多信息,请告诉我。

4

2 回答 2

5

我认为问题在于node['java']评估到nil.

一种可能的解决方案是node['java']['install_flavor']在说明书或节点定义或相关角色定义中定义属性。

但这看起来像是食谱中的一个错误,因为文档说默认值应该应用于该install_flavor属性。

于 2013-07-22T11:21:55.943 回答
0

这绝对看起来像一个错误。对于那些有类似问题的人,我建议只使用 java::openjdk。

于 2014-05-07T06:28:56.250 回答