Vagrant, Chef-solo 및 Java 요리책:'java_ark[jdk]' 리소스에서 `install` 작업을 실행하는 중 오류가 발생했습니다.

StackOverflow https://stackoverflow.com//questions/21016295

  •  21-12-2019
  •  | 
  •  

문제

정밀64로 Vagrant 상자를 설정했으며 The Java Cookbook(http://community.opscode.com/cookbooks/java) 하지만 오류가 발생합니다.

Error executing action `install` on resource 'java_ark[jdk]'

난 달린다 방랑하다 터미널에서 다음 출력을 얻습니다.

Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'precise64'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 80 => 8080 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] The guest additions on this VM do not match the installed version of
VirtualBox! In most cases this is fine, but in rare cases it can
prevent things such as shared folders from working properly. If you see
shared folder errors, please make sure the guest additions within the
virtual machine match the version of VirtualBox you have installed on
your host and reload your VM.

Guest Additions Version: 4.2.0
VirtualBox Version: 4.3
[default] Mounting shared folders...
[default] -- /vagrant
[default] -- /tmp/vagrant-chef-1/chef-solo-2/roles
[default] -- /tmp/vagrant-chef-1/chef-solo-1/cookbooks
[default] Running provisioner: chef_solo...
Generating chef JSON and uploading...
Running chef-solo...
stdin: is not a tty
[2014-01-09T09:25:53+00:00] INFO: *** Chef 10.14.2 ***
[2014-01-09T09:25:55+00:00] INFO: Setting the run_list to ["role[myrecipes]"] from JSON
[2014-01-09T09:25:55+00:00] INFO: Run List is [role[myrecipes]]
[2014-01-09T09:25:55+00:00] INFO: Run List expands to [java]
[2014-01-09T09:25:55+00:00] INFO: Starting Chef Run for precise64
[2014-01-09T09:25:55+00:00] INFO: Running start handlers
[2014-01-09T09:25:55+00:00] INFO: Start handlers complete.
[2014-01-09T09:25:56+00:00] INFO: ruby_block[set-env-java-home] called
[2014-01-09T09:25:56+00:00] INFO: file[/etc/profile.d/jdk.sh] mode changed to 755
[2014-01-09T09:25:56+00:00] INFO: file[/etc/profile.d/jdk.sh] created file /etc/profile.d/jdk.sh
[2014-01-09T09:25:56+00:00] INFO: Adding jdk to /usr/lib/jvm/jdk1.7.0_45

================================================================================
Error executing action `install` on resource 'java_ark[jdk]'
================================================================================

NoMethodError
-------------
undefined method `headers' for Chef::Resource::RemoteFile

Cookbook Trace:
---------------
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/java/providers/ark.rb:70:in `download_direct_from_oracle'
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/java/providers/ark.rb:67:in `download_direct_from_oracle'
/tmp/vagrant-chef-1/chef-solo-1/cookbooks/java/providers/ark.rb:108:in `class_from_file'

Resource Declaration:
---------------------
# In /tmp/vagrant-chef-1/chef-solo-1/cookbooks/java/recipes/oracle.rb

 46: 
 47: java_ark "jdk" do
 48:   url tarball_url
 49:   checksum tarball_checksum
 50:   app_home java_home
 51:   bin_cmds bin_cmds
 52:   alternatives_priority 1062
 53:   action :install
 54: end
 55: 

Compiled Resource:
------------------
# Declared in /tmp/vagrant-chef-1/chef-solo-1/cookbooks/java/recipes/oracle.rb:47:in `from_file'

java_ark("jdk") do
  app_home "/usr/lib/jvm/java-7-oracle-amd64"
  checksum "bea330fcbcff77d31878f21753e09b30"
  retry_delay 2
  owner "root"
  default true
  url "http://download.oracle.com/otn-pub/java/jdk/7u45-b18/jdk-7u45-linux-x64.tar.gz"
  retries 0
  alternatives_priority 1062
  recipe_name "oracle"
  action [:install]
  bin_cmds ["appletviewer", "apt", "ControlPanel", "extcheck", "idlj", "jar", "jarsigner", "java", "javac", "javadoc", "javafxpackager", "javah", "javap", "javaws", "jcmd", "jconsole", "jcontrol", "jdb", "jhat", "jinfo", "jmap", "jps", "jrunscript", "jsadebugd", "jstack", "jstat", "jstatd", "jvisualvm", "keytool", "native2ascii", "orbd", "pack200", "policytool", "rmic", "rmid", "rmiregistry", "schemagen", "serialver", "servertool", "tnameserv", "unpack200", "wsgen", "wsimport", "xjc"]
  cookbook_name :java
  supports {:exception=>true, :report=>true}
end

[2014-01-09T09:25:56+00:00] ERROR: Running exception handlers
[2014-01-09T09:25:56+00:00] ERROR: Exception handlers complete
[2014-01-09T09:25:56+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
[2014-01-09T09:25:56+00:00] FATAL: NoMethodError: java_ark[jdk] (java::oracle line 47) had an error: NoMethodError: undefined method `headers' for Chef::Resource::RemoteFile
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.

내 방랑 파일

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"

  config.vm.network :forwarded_port, guest: 80, host: 8080

  # Chef-solo
  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = ["site-cookbooks", "cookbooks"]
    chef.roles_path = "roles"
    chef.add_role "myrecipes"
  end

end

역할/myrecipes.rb

name "myrecipes"

default_attributes(
    "java" => {
        "install_flavor" => "oracle",
        "jdk_version" => 7,
        "oracle" => {
                "accept_oracle_download_terms" => true
        }
    }
)

run_list(
    "recipe[apt]",
    "recipe[openssl]",
    "recipe[java]"
)
도움이 되었습니까?

해결책

문제는 사용 중인 Chef 버전(10.14.2)과 java 자세한 해설서.

구현 java_ark 요리책의 리소스 공급자가 header 셰프의 비법 remote_file Oracle 설치 프로그램을 다운로드할 때 리소스를 다운로드합니다.문제는 header 메소드는 다음에서만 구현되었습니다. remote_file Chef 11.6.0의 리소스(Github에서 Chef 소스 코드를 읽음)

해결책은 최신 버전의 Chef로 업그레이드하거나 이전 버전의 Chef를 사용하는 것입니다. java Chef 10.x와 함께 작동하는 요리책입니다.(후자는 아마도 나쁜 생각 일 것입니다 ...최신 Oracle 다운로드 URL과 관련 속성의 체크섬을 수동으로 설정할 준비가 되어 있지 않은 경우 ...)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top