AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 123419
Accepted
snk
snk
Asked: 2010-03-18 07:03:59 +0800 CST2010-03-18 07:03:59 +0800 CST 2010-03-18 07:03:59 +0800 CST

无需用户输入的 Linux `alternatives --config`

  • 772

我正在编写一个 RHEL kickstart 脚本,在我的 %post 中,我需要安装一个 JRE。

基本上,当前的设置需要我在第一次启动后手动进入并使用alternatives --config命令将新安装的 JRE 设置为默认值。有没有办法让我传递参数,alternatives这样我就不必手动选择正确的 JRE?

java centos kickstart
  • 4 4 个回答
  • 11811 Views

4 个回答

  • Voted
  1. Best Answer
    Dennis Williamson
    2010-03-18T07:27:53+08:002010-03-18T07:27:53+08:00

    你的版本有--set吗?

    --set name path
    将程序路径设置为 name 的替代路径。这等效于 --config 但它是非交互式的,因此是可编写脚本的。

    • 22
  2. Daniel
    2020-03-20T10:50:18+08:002020-03-20T10:50:18+08:00

    您可以使用alternatives --auto <name>自动选择最高优先级的选项。

    一个例子:

     alternatives --install  /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/javac javac /usr/java/latest/bin/javac 10
     alternatives --install /usr/bin/javac javac /usr/java/latest/bin/javac 20
     alternatives --auto javac
    

    将选择更高优先级的版本 (20)/usr/java/latest/bin/javac

    • 2
  3. Oleksii K.
    2022-05-13T11:54:21+08:002022-05-13T11:54:21+08:00

    使用grep:

    update-alternatives --set java $(update-alternatives --list java | grep java-8)
    

    或者

    update-alternatives --set java $(update-alternatives --list java | grep java-11)
    
    • 1
  4. Georgios Syngouroglou
    2021-07-28T01:35:41+08:002021-07-28T01:35:41+08:00

    您可以使用下面的脚本。
    您应该根据您的系统配置java“/bin”目录的路径和每个版本的编号。

    #!/bin/bash
    # update-java script
    
    # Supported versions from the script. You may add more version numbers according to your needs.
    supported_versions=( 8 11 )
    
    # Validate that an argument has been given
    if [ -z "$1" ]; then
        echo -e "No argument given. You should set as first argument the preferred java version.\nAvailable values: ${supported_versions[@]}"
        exit
    fi
    
    # Java "/bin" of each version. Be careful, each path should have the same index with the supported_versions array.
    version_path=( "/usr/lib/jvm/jdk1.8.0_171/bin" "/usr/lib/jvm/java-11-openjdk-amd64/bin")
    
    # Configure the alternatives
    found=0
    for i in "${!supported_versions[@]}"; do
        if [[ ${supported_versions[$i]} -eq $1 ]]; then
            update-alternatives --set java ${version_path[$i]}/java
            update-alternatives --set javac ${version_path[$i]}/javac
            found=1
        fi
    done
    
    # If a wrong version number has been given
    if [ $found -ne 1 ]; then
        echo "You didn't provide a version of: ${supported_versions[@]}"
    fi
    

    如果将脚本保存为“update-java”,然后设置可执行权限,您将能够像下面这样运行。

    $sudo update-java 12
    You didn't provide a version of: 8 11
    $sudo update-java
    No argument given. You should set as first argument the preferred java version.
    Available values: 8 11
    $sudo update-java 11
    
    • 0

相关问题

  • 适合初级 Linux 管理员的资源

  • 如何配置外部 CentOS 服务器作为 HTTP 代理/中继?

  • CentOS 的百胜安全?

  • 在 Windows 中将 kickstart 添加到 cd

  • 如何以尽可能少的依赖项在 FreeBSD 上安装 Java JRE

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve