当前位置: 首页 > 面试题库 >

Java Cookbook可以用于安装Oracle Java的本地副本吗?

赖翰
2023-03-14
问题内容

我最近一直在尝试学习厨师,因为我打算使用它来部署服务器配置和服务器应用程序软件。我在理解如何使用其他人的食谱方面遇到问题。例如,我要部署JDK8u31。我无法弄清楚如何实现本食谱。https://supermarket.chef.io/cookbooks/java

我阅读了说明,然后看到以下内容

只需在需要安装Java的任何地方添加Java配方,例如运行列表(recipe [java])或食谱(include_recipe’java’)

我试过了

include_recipe 'java'

在我的食谱common_java_server中

然后

directory '/usr/lib/jvm/' do
  owner 'root'
  group 'root'
  mode '0644'
end




java_ark "jdk" do
    url 'http://download.oracle.com/otn-pub/java/jdk/8u31/jdk-8u31-linux-x64.bin'
    checksum  'a8603fa62045ce2164b26f7c04859cd548ffe0e33bfc979d9fa73df42e3b3365'
    app_home '/usr/lib/jvm/'
    bin_cmds ["java", "javac"]
    action :install
end

# set alternatives for java and javac commands
java_alternatives "set java alternatives" do
    java_location '/usr/local/java'
    bin_cmds ["java", "javac"]
    action :set
end

这是我得到的错误

Recipe Compile Error in /etc/chef/src/cookbooks/common/recipes/java_dev_server.rb
====

问题答案:

在java的食谱被设计为支持安装不同的Java变种。它的行为由节点属性控制。默认值在食谱中,并将安装OpenJDK。

因此,要安装oracle JDK,您需要指定替代替代,有关这些替代的内容,请参见自述文件

你怎么做到这一点?在厨师中,您至少有两个选择:

  1. 包装食谱
  2. 角色

对于示例角色,请尝试以下操作:

{
  "name": "java",
  "description": "Oracle java role",
  "override_attributes": {
    "java": {
      "jdk_version": 8,
      "install_flavor": "oracle",
      "oracle": {
        "accept_oracle_download_terms": true
      }
    }
  },
  "run_list": [
    "recipe[apt]",
    "recipe[java]"
  ]
}

将此角色添加到节点的运行列表中,将安装OracleJDK。

以下是一个测试厨房示例,它将针对ubuntu和centos安装并测试“ java”角色

├── Berksfile
├── .kitchen.yml
├── roles
│   └── java.json
└── test
    └── integration
        └── default
            └── serverspec
                └── java_spec.rb

安装chefDK,vagrant并运行以下命令

kitchen test

笔记:

  • 让测试厨房运行的最简单方法是同时安装vagrant和chefdk

Berksfile

source "https://supermarket.chef.io"

cookbook "apt"
cookbook "java"

.kitchen.yml

---
driver:
  name: vagrant

provisioner:
  name: chef_zero
  require_chef_omnibus: 12.0.3
  client_rb:
    "Ohai::Config[:disabled_plugins] = [:GCE] #":

platforms:
  - name: ubuntu-12.04
  - name: centos-6.4

suites:
  - name: default
    run_list:
      - role[java]

笔记:

  • 特殊角色“ java”已添加到节点运行列表。
  • 本示例禁用“ gce”插件。参见问题624。

角色/java.json

往上看

测试/集成/默认/服务器规格/java_spec.rb

require 'serverspec'

# Required by serverspec
set :backend, :exec

describe file('/usr/lib/jvm/java-8-oracle-amd64/release'), :if => os[:family] == "ubuntu" do
  it { should contain 'JAVA_VERSION="1.8.0_31"' }
end

describe file('/usr/lib/jvm/java/release'), :if => os[:family] == "redhat" do
  it { should contain 'JAVA_VERSION="1.8.0_31"' }
end


 类似资料:
  • 本教程将带你了解如何在本地计算机上安装和运行Hyperledger Composer Playground。它还创建了Hyperledger Fabric v1.0的一个实例。 Hyperledger Composer Playground还可以在“仅浏览器”模式下使用,不需要运行Hyperledger Fabric实例。在此模式下使用时,Hyperledger Composer Playgrou

  • 我是lodash的新手,我已经将lodash安装为 我在我的索引中调用它。js文件作为 然而,这是不工作的,它显示在控制台上的错误为 指数js:1未捕获的语法错误:意外的标识符“\u1” 我没有使用节点。js

  • 问题内容: 我需要在本地主机(CentOS)中安装Jenkins,并尝试在以下链接中发布过程: https://wiki.jenkins- ci.org/display/JENKINS/Installing+Jenkins+on+RedHat+distributions 但这给出了一个错误, 正在解析pkg.jenkins-ci.org … 63.246.20.93连接到pkg.jenkins-c

  • npm警告checkPermissions缺少对/usr/local/lib/node_modules的写访问权限npm错误!path/usr/local/lib/node_modules npm错误!代码EACCES npm错误!错误-13 npm错误!系统调用访问npm错误!错误:EACCES:权限被拒绝,访问'/usr/local/lib/node_modules'npm错误!{错误:eac

  • 问题内容: 我想使用NSIS脚本安装Java,但是我必须知道系统(Windows)中是否安装了Java。根据注册码,如何检查是否已安装Java? 有人可以提供NSIS脚本来根据注册密钥检查Java安装吗? 问题答案: 我没有编译它,但是我会尝试跟随。我基于如何检测Windows上已安装的Sun JRE选择了注册表项?。

  • 问题内容: 我可以以某种方式跳过对项目的本地Gulp安装吗? 我在全球范围内安装了Gulp,并将其作为依赖项添加到package.json中。但Gulp仍然希望随消息一起在本地安装。如果执行本地安装,则Gulp将按节点复制到我的项目中。 有没有办法跳过Gulp的本地安装?我希望能够从命令行在整个服务器上运行它并全局管理它的安装。 问题答案: 一种干净的方法是在本地没有安装 gulp ,就像在本地一