oracle 11g r2在rhel 6上启动图形安装器前硬性依赖20个包,缺一即报错退出;核心硬性包包括binutils、gcc、gcc-c++、make、glibc(x86_64+i686)、glibc-devel(x86_64+i686)、libaio(x86_64+i686)、libaio-devel、compat-libstdc++-33(x86_64+i686)、ksh或pdksh、elfutils-libelf、elfutils-libelf-devel,以及compat-libcap1(若用preinstall包则必需)。

必须离线安装,就不能用 yum 或网络源;所有依赖包得提前下载好、手动 rpm -ivh 安装,顺序和依赖关系稍错就失败。
哪些包是硬性依赖,漏一个就进不了安装界面
Oracle 11g R2(11.2.0.x)在 RHEL 6 上启动图形安装器前,会检查约 20 个系统级包。缺任何一个,runInstaller 直接报错退出,提示类似 package xxx is not installed。
-
binutils、gcc、gcc-c++、make—— 编译和链接基础工具 -
glibc(x86_64 + i686 双架构)、glibc-devel(x86_64 + i686)—— 运行时和头文件,i686 版本常被忽略 -
libaio(x86_64 + i686)、libaio-devel—— 异步 I/O 支持,Oracle 启动强依赖 -
compat-libstdc++-33(x86_64 + i686)—— Oracle 二进制依赖的老标准 C++ 库 -
ksh或pdksh—— 安装脚本默认调用/bin/ksh,RHEL 6 默认只有bash,必须补上 -
elfutils-libelf、elfutils-libelf-devel—— 解析 ELF 文件所需,runInstaller自身就依赖它
为什么不能只用光盘里的包?缺的几个得单独找
RHEL 6 安装镜像(如 Server/ 目录)自带大部分依赖,但以下包通常不在默认 ISO 中:
-
pdksh-5.2.14-37.el5_8.1.i386.rpm:RHEL 6 没有原生ksh,必须用这个兼容版(注意是 el5_8.1,不是 el6) -
rlwrap-0.42-1.el6.x86_64.rpm:虽非安装器硬依赖,但没它,sqlplus回退键、历史命令全失效,运维极其痛苦 -
unixODBC和unixODBC-devel:某些版本安装器会校验,尤其启用监听或配置客户端时
这些包得从 CentOS 6 或 Oracle Linux 6 的仓库手动下载(例如 mirrors.163.com/centos/6/os/x86_64/Packages/),不能指望 RHEL 6 原盘。
rpm -ivh 安装时最容易卡在哪几个点
离线安装最常栽在三个地方:
-
依赖循环:比如
glibc-devel要求glibc-headers,而后者又依赖某个特定版本的kernel-headers—— 必须按kernel-headers → glibc-headers → glibc-devel顺序装 -
架构混装失败:
libaio-0.3.107-10.el6.i686.rpm和libaio-0.3.107-10.el6.x86_64.rpm必须一起装,漏掉 i686 版,runInstaller会报libaio.so.1: cannot open shared object file -
冲突覆盖失败:RHEL 6 自带
elfutils-libelf-0.160-1.el6.x86_64,但 Oracle 要求 ≥ 0.163 —— 得用--force --nodeps强装新版本,否则rpm拒绝覆盖
验证是否真装齐了:运行 rpm -q 检查清单
别信“我好像都点了安装”,执行下面这行命令,输出应全是包名,没有 package xxx is not installed:
rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel elfutils-libelf elfutils-libelf-devel
特别注意:compat-libcap1 在部分 RHEL 6 镜像里没有,但它被 oracle-rdbms-server-11gR2-preinstall RPM 间接依赖 —— 如果后续要用 preinstall 包,这个也得提前塞进去。
离线环境里,少一个包,可能卡在安装中途第三步;多一个 --force,可能让后续 root.sh 权限脚本静默失败。最稳妥的方式,是把所有 rpm 文件拷进同一目录,用 rpm -Uvh *.rpm 一次过,让 rpm 自动排序依赖 —— 但前提是你的 rpm 包版本彼此兼容,不能混搭 RHEL 5 和 RHEL 7 的包。











