Oracle 19c的runinstaller因依赖X11图形栈而需libxcb.so.1,该库在RHEL/CentOS 8+、Oracle Linux 8及银河麒麟V10等系统中默认未安装或包名不同,导致“cannot open shared object file”错误;需按系统版本选用dnf module enable xcb、yum install libxcb或yum search xcb后安装对应包,并配合libX11等X11相关库一并部署。
为什么 runinstaller 启动时报 libxcb.so.1 找不到
oracle 19c 的图形安装器(runinstaller)依赖 x11 图形栈,而 libxcb.so.1 是 xcb(x c binding)的核心运行时库,负责与 x server 通信。rhel/centos 7 默认安装了它,但 rhel 8+、oracle linux 8+ 或最小化安装的系统中,该包被移出 base 仓库,或仅以模块形式存在,不随系统默认安装。直接运行 ./runinstaller 时,动态链接器找不到 libxcb.so.1,就会报类似 error while loading shared libraries: libxcb.so.1: cannot open shared object file 的错误。
libxcb 包在不同系统中的安装方式差异
不能统一用 yum install libxcb —— 是否成功取决于系统版本和仓库配置:
- RHEL/CentOS 7:可用
yum install libxcb直接安装,包名就是libxcb - RHEL/CentOS 8+:默认启用 modular repo,
libxcb属于appstream模块,需先启用再安装:dnf module enable xcb,再dnf install libxcb - Oracle Linux 8:同 RHEL 8,但若使用
yum命令(非dnf),需确认是否已 alias 到 dnf;否则会提示No match for argument: libxcb - 银河麒麟 V10:包名可能为
libxcb1或libxcb-xinerama0,需用yum search xcb确认实际包名,再安装libxcb.x86_64
验证 libxcb 是否真正就位的三步检查法
装完不等于能用,必须确认符号链接、路径和权限都正确:
- 查文件是否存在:
find /usr -name "libxcb.so*" 2>/dev/null,应返回类似/usr/lib64/libxcb.so.1 - 查链接是否有效:
ls -l /usr/lib64/libxcb.so.1,确保不是断链(target 文件存在) - 查运行时能否加载:
ldd $ORACLE_HOME/oui/bin/runInstaller | grep xcb,输出应为libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x...),而非not found
libxcb 缺失常与其他 X11 依赖交织出现
单独补 libxcb 往往不够,因为 Oracle 图形安装器是一整套 X11 客户端,依赖链紧密:
- 常见连带缺失包:
libX11、libXau、libXrender、libXtst、libXi - 如果只装
libxcb后仍报其他libX*.so.1错误,说明 X11 客户端支持不完整,建议一次性装全:yum install -y libX11 libXau libXi libXtst libXrender libxcb - 注意:某些系统(如最小化安装的 OL8)还缺
fontconfig和fontconfig-devel,会导致界面字体渲染失败或 installer 启动黑屏
.so,runinstaller 就可能静默失败或卡在启动阶段——这点很容易被忽略,因为错误日志里不一定明确指出是哪个库导致的。











