如何在Fedora 37 Docker镜像中安装Java 11.0.21版本?
解决Fedora 37 Docker镜像中安装Java 11.0.21的问题
错误原因
你遇到的依赖冲突,是因为java-11-openjdk-devel必须依赖完全同版本的java-11-openjdk主包,但你仅单独安装了高版本的devel包,系统中现存的主包是11.0.20版本,版本不匹配导致依赖缺失。
解决方案
推荐方案:临时启用updates-testing仓库安装指定版本
Java 11.0.21这个版本属于Fedora 37的updates-testing仓库,直接临时启用该仓库即可安装指定版本的主包和devel包,无需手动下载RPM:
RUN set -ex; \ # 临时启用updates-testing仓库,安装指定版本的Java包 dnf install -y --enablerepo=updates-testing java-11-openjdk-1:11.0.21.0.9-1.fc37 java-11-openjdk-devel-1:11.0.21.0.9-1.fc37
备选方案:手动下载匹配版本的RPM包安装
如果无法启用updates-testing仓库,可手动获取同版本的java-11-openjdk主包与devel包,一并安装:
RUN set -ex; \ # 下载同版本的java-11-openjdk主包和devel包(从Fedora官方仓库渠道获取对应RPM) wget -nv -O /tmp/java-11-openjdk.rpm "获取到的对应版本主包RPM路径"; \ wget -nv -O /tmp/java-11-openjdk-devel.rpm "获取到的对应版本devel包RPM路径"; \ # 同时安装两个包,解决依赖问题 dnf install -y /tmp/java-11-openjdk.rpm /tmp/java-11-openjdk-devel.rpm; \ # 清理临时文件 rm -f /tmp/java-11-openjdk.rpm /tmp/java-11-openjdk-devel.rpm
验证安装结果
安装完成后,执行以下命令确认版本是否正确:
java -version javac -version
输出信息中应显示版本为11.0.21。
内容的提问来源于stack exchange,提问作者hitesh
相关产品推荐
相关产品推荐

