必须用dnf install而非localinstall安装预安装包,因为oracle-database-preinstall-23c强依赖compat-openssl10等不在默认仓库的包,dnf install能解析并自动从ol9_appstream等远程仓库拉取依赖,而localinstall仅限本地依赖解析,会导致libcrypto.so.10缺失、gpg校验失败或服务注册异常。

必须用 dnf install 而非 localinstall 安装预安装包,否则 compat-openssl10 等关键依赖会缺失
为什么 preinstall 包不能用 localinstall?
Oracle 23c 的 oracle-database-preinstall-23c RPM 包声明了对 compat-openssl10 的强依赖,但该包不在 RHEL9 默认仓库中,而是在 Oracle 官方仓库的 ol9_appstream 源里。若用 dnf localinstall,dnf 无法自动拉取远程依赖,会静默跳过或报错退出;只有 dnf install 才会触发仓库元数据解析和依赖递归安装。
常见现象:dnf localinstall oracle-database-preinstall-23c-*.rpm 成功返回,但后续运行 /etc/init.d/oracle-free-23c configure 时卡在 GPG 校验或直接报 libcrypto.so.10: cannot open shared object file。
- 确认是否已启用 Oracle 仓库:
dnf repolist | grep -E "(ol9_baseos|ol9_appstream)",无输出需先配置/etc/yum.repos.d/oracle-linux-9.repo - 手动导入密钥:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle-ol9 - 强制走在线安装:
dnf -y install oracle-database-preinstall-23c-1.0-0.5.el9.x86_64.rpm(注意后缀是el9,不是el8)
哪些依赖包必须由 preinstall 自动拉取?
不要手动 rpm -ivh --force --nodeps 补依赖——这会破坏 RPM 数据库一致性,导致后续 dnf update 失败或 oracle-free-23c 服务无法注册为 systemd 单元。
真正需要 preinstall 自动解决的核心依赖包括:
-
compat-openssl10(最关键,23c 启动监听器和 sqlplus 都硬依赖) -
libnsl2和libnsl2-devel(RHEL9 默认不带libnsl,旧版 Oracle 工具链调用未适配) -
bc、sysstat、smartmontools(健康检查脚本cvu运行必需) - 内核参数模板(自动写入
/etc/sysctl.d/99-oracle-database.conf)
RHEL9 上最容易漏掉的两个仓库配置项
即使你下载了正确的 el9 RPM 包,若仓库配置不完整,dnf install 仍会 fallback 到失败状态,错误信息常被截断为 Curl error (37) 或 GPG key retrieval failed。
必须确保 /etc/yum.repos.d/oracle-linux-9.repo 中以下两项 enabled=1:
-
[ol9_baseos_latest]:提供基础工具链(如bc、sysstat) -
[ol9_appstream]:提供compat-openssl10和oracle-database-preinstall-23c本身
别信“只开一个就够了”的经验——preinstall 包的 Requires: 字段同时引用了两个源里的包,缺一不可。
验证依赖是否真正就位的三步检查法
跑完 dnf install oracle-database-preinstall-23c 后,别急着装主包,先执行:
- 查 OpenSSL 兼容层:
ls /usr/lib64/libcrypto.so.10*,应有输出;没有则说明compat-openssl10没装上 - 查用户组配置:
id oracle,应显示属于oinstall、dba、oper三组 - 查内核参数加载:
sysctl net.core.rmem_max,值应 ≥ 4194304(preinstall 设置的默认值)
三项全通过,再运行 dnf install oracle-database-free-23c-*.el9.x86_64.rpm。任何一项失败,都说明依赖链没闭合——这时候重装 preinstall 比手动补包更可靠。











