Oracle Linux 9 Docker容器中Amazon Corretto 11安装异常求助
在Oracle Linux 9中安装Amazon Corretto 11时出现"文件不存在"错误的排查与解决
尝试在Oracle Linux 9中通过脚本安装Amazon Corretto 11,脚本执行后提示bash.sh: line 23: /usr/java/amazon-corretto-11.0.22.7.1-linux-x86/bin/java: No such file or directory,但该文件实际存在。
问题根源
你的脚本使用uname -i检测架构,在Oracle Linux 9的64位系统中,uname -i可能返回i386或i686,导致脚本下载了32位版本的Corretto。而Oracle Linux 9默认是64位系统,无法直接运行32位二进制文件——即使文件存在,系统也会因架构不兼容或缺少32位运行时依赖,抛出"找不到文件"的错误。
解决方案
1. 修正脚本的架构检测逻辑
将脚本中的架构检测部分替换为uname -m,它会准确返回64位系统的架构标识x86_64:
# 替换原有的架构检测代码 os_arch_lower=$(uname -s | tr '[:upper:]' '[:lower:]') os_arch=$(uname -m | tr '[:upper:]' '[:lower:]')
修正后的完整脚本:
#! /bin/bash java_version=11.0.22.7.1 # 检测系统类型和架构(修正版) os_arch_lower=$(uname -s | tr '[:upper:]' '[:lower:]') os_arch=$(uname -m | tr '[:upper:]' '[:lower:]') echo "系统类型: $os_arch_lower" echo "系统架构: $os_arch" # 创建目标目录 mkdir -p /usr/java/ # 下载并安装Corretto curl -LO https://corretto.aws/downloads/resources/${java_version}/amazon-corretto-${java_version}-${os_arch_lower}-${os_arch}.tar.gz \ && mv "amazon-corretto-${java_version}-${os_arch_lower}-${os_arch}.tar.gz" "/usr/java/" \ && cd /usr/java \ && tar zxvf "amazon-corretto-${java_version}-${os_arch_lower}-${os_arch}.tar.gz" \ && export JAVA_HOME="/usr/java/amazon-corretto-${java_version}-${os_arch_lower}-${os_arch}" \ && export PATH="$JAVA_HOME/bin:$PATH" \ && java --version
2. 验证现有文件的兼容性(可选)
如果不想重新下载,可通过ldd命令检查现有java二进制文件的依赖情况:
ldd /usr/java/amazon-corretto-11.0.22.7.1-linux-x86/bin/java
若输出中出现not found的条目,说明缺少32位系统库。由于Oracle Linux 9对32位支持有限,建议直接替换为64位版本的Corretto。
3. 清理旧文件并重新安装
先删除已下载的32位文件:
rm -rf /usr/java/amazon-corretto-11.0.22.7.1-linux-x86*
再运行修正后的脚本即可完成64位Corretto的安装。
内容的提问来源于stack exchange,提问作者Krishnadhas
相关产品推荐
相关产品推荐

