挂载iso做本地源是离线安装oracle 12c最稳解法,但必须确保路径正确、repo配置精准(baseurl=file:///mnt、enabled=1、gpgcheck=0)、禁用网络源,并注意i686架构包缺失及ld_library_path环境变量生效。
离线安装 oracle 12c 时,yum 找不到依赖包是高频卡点,直接原因是系统没网络,又没配置可用的本地源。挂载 centos iso 镜像是最稳、最省事的解法,但必须确保挂载路径、repo 配置和包名三者对得上,否则 yum install 会静默跳过或报 no package xxx available。
挂载 ISO 后为什么 df -lh 看不到 /mnt?
常见错误是挂载命令写错路径或权限不足。比如镜像实际在 /root/CentOS-7-x86_64-DVD-1908.iso,却执行了 mount -o loop /home/CentOS-7-x86_64-DVD-1908.iso /mnt —— 路径不存在或文件不存在都会失败,且不报错。正确做法:
- 先确认 ISO 文件存在:
ls -l /path/to/CentOS-7-x86_64-DVD-*.iso - 确保
/mnt目录存在且为空:mkdir -p /mnt && rm -rf /mnt/* - 用绝对路径挂载:
mount -o loop /root/CentOS-7-x86_64-DVD-1908.iso /mnt - 验证挂载结果:
ls /mnt/Packages/ | head -n 3应能看到大量.rpm文件
CentOS-media.repo 配置项哪些不能省?
baseurl 必须是 file:///mnt(三个斜杠),少一个就失效;enabled=1 和 gpgcheck=0 是离线场景刚需。常见漏配:
- 误写成
baseurl=file:///mnt/Packages——yum不认子目录,只认 repo 根目录下的repodata - 忘记禁用原 repo:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak,否则yum仍会尝试走网络源并超时 -
gpgcheck=1保留时,yum makecache会因缺 GPG key 报错,必须设为0
安装依赖时为什么提示 “No match for argument”?
Oracle 12c 明确要求某些包必须是 i686 架构(如 glibc.i686、libaio.i686),而默认挂载的 CentOS 7 ISO 只含 x86_64 包。这是离线安装最容易翻车的点。
- 先检查缺失项:
rpm -q binutils compat-libcap1 glibc.i686 libaio.i686 unixODBC-devel | grep "not installed" - 若输出含
.i686,说明 ISO 里没这些包 —— CentOS 7 官方 DVD 默认不含 i686,需额外下载CentOS-7-x86_64-Everything-*.iso并挂载到另一目录(如/mnt/everything),再建第二个 repo - 或者改用最小化安装 ISO + 补全依赖包:从 CentOS 镜像站单独下载缺失的 i686 RPM,用
rpm -ivh *.rpm手动装(注意依赖顺序)
依赖装完后 still get “libaio.so.1: cannot open shared object file”?
这表示运行时链接库没被找到,不是安装问题,而是 LD_LIBRARY_PATH 没生效或 libaio 的 so 文件不在标准路径。关键动作:
- 确认
libaio已装:rpm -ql libaio | grep so应输出类似/usr/lib64/libaio.so.1 - Oracle 安装用户(
oracle)的.bash_profile中必须包含:export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib64:/lib64:$LD_LIBRARY_PATH - 切记:改完要
source ~/.bash_profile,且必须用oracle用户执行后续安装脚本,root 下装的库对 oracle 用户不自动可见
挂载 ISO 做本地源本身很简单,难的是挂完之后的路径校验、架构对齐、环境变量作用域——这三个环节任一出错,都会让 Oracle 安装器在“检查先决条件”阶段直接退出,连日志都来不及写。











