【问题标题】:installing java using chef solo on ec2在 ec2 上使用 chef solo 安装 java
【发布时间】:2015-05-20 22:29:07
【问题描述】:

我正在使用 chef-solo 尝试我的第一个食谱 - 一个在执行任何操作之前尝试安装 java 的简单食谱。我想安装 Java 的 Oracle 版本,但我遇到了多个失败消息。我该如何解决?这是我的配置 -

 sudo chef-solo -c solo.rb -j web.json

我的solo.rb是这样的

cookbook_path "/home/ubuntu/chef-repo/cookbooks"

和 web.json

{
    "java": {
        "jdk_version": "7",
        "java_home": "opt/java",
        "oracle" : {
            "accept_oracle_download_terms": true
        }
    },
    "run_list" :  [ "recipe[testapp]" ]
}

我的 testapp 配方 default.rb

include_recipe "java::default"

我在 metadata.rb 中将 java 指定为依赖项。这就是我在新的 ec2 节点上运行上述内容时得到的结果。

Starting Chef Client, version 11.8.2
Compiling Cookbooks...
[2015-05-08T20:50:41+00:00] WARN: Using java::default instead is recommended.
Converging 7 resources
Recipe: java::openjdk
  * package[openjdk-7-jdk] action install
================================================================================
Error executing action `install` on resource 'package[openjdk-7-jdk]'
================================================================================


Mixlib::ShellOut::ShellCommandFailed
------------------------------------
Expected process to exit with [0], but received '100'
---- Begin output of apt-get -q -y install openjdk-7-jdk=7u79-2.5.5-0ubuntu0.14.04.2 ----
STDOUT:
STDERR: E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
---- End output of apt-get -q -y install openjdk-7-jdk=7u79-2.5.5-0ubuntu0.14.04.2 ----
Ran apt-get -q -y install openjdk-7-jdk=7u79-2.5.5-0ubuntu0.14.04.2 returned 100


Resource Declaration:
---------------------
# In /home/ubuntu/chef-repo/cookbooks/java/recipes/openjdk.rb

 46:   package pkg do
 47:     version node['java']['openjdk_version'] if node['java']['openjdk_version']
 48:   end
 49: end



Compiled Resource:
------------------
# Declared in /home/ubuntu/chef-repo/cookbooks/java/recipes/openjdk.rb:46:in `block in from_file'

package("openjdk-7-jdk") do
  action :install
  retries 0
  retry_delay 2
  package_name "openjdk-7-jdk"
  version "7u79-2.5.5-0ubuntu0.14.04.2"
  cookbook_name :java
  recipe_name "openjdk"
end



[2015-05-08T20:50:41+00:00] ERROR: Running exception handlers
[2015-05-08T20:50:41+00:00] ERROR: Exception handlers complete
[2015-05-08T20:50:41+00:00] FATAL: Stacktrace dumped to /home/ubuntu/chef-solo/chef-stacktrace.out
Chef Client failed. 0 resources updated
[2015-05-08T20:50:41+00:00] ERROR: package[openjdk-7-jdk] (java::openjdk line 46) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '100'
---- Begin output of apt-get -q -y install openjdk-7-jdk=7u79-2.5.5-0ubuntu0.14.04.2 ----
STDOUT:
STDERR: E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.
---- End output of apt-get -q -y install openjdk-7-jdk=7u79-2.5.5-0ubuntu0.14.04.2 ----
Ran apt-get -q -y install openjdk-7-jdk=7u79-2.5.5-0ubuntu0.14.04.2 returned 100
[2015-05-08T20:50:41+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

【问题讨论】:

  • 尝试在您的运行列表中包含“apt”食谱。这将执行“apt-get update”命令这通常可以解决新服务器上的大多数软件包安装问题。
  • 我在运行 chef-solo 之前手动进行了 apt-get 更新。它没有改变任何东西。
  • 在错误中显示STDERR: E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.

标签: java amazon-ec2 chef-infra


【解决方案1】:

sudo dpkg --configure -a 做到了。

【讨论】:

  • 你应该解释为什么“这样做”。
  • coz,这就是它的作用 - 重新配置一个解压缩的包。如果给出 -a 或 --pending 而不是 package,则配置所有未打包但未配置的包。配置包括以下步骤: 1. 解压conffiles,同时备份旧的conffiles,以便在出现问题时可以恢复。 2. 运行 postinst 脚本(如果包提供)。
猜你喜欢
  • 2015-11-06
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 1970-01-01
相关资源
最近更新 更多