Ubuntu22.04上Cognos12启动失败:BIBusTKServerMain等进程无法启动
问题现象
启动Cognos服务时触发以下错误:
External Report Server process BIBusTKServerMain cannot be started
java.io.IOException: Cannot run program "/opt/ibm/cognos/analytics/bin/BIBusTKServerMain" (in directory "/opt/ibm/cognos/analytics/bin"): error=2, No such file or directory
External Report Server process BmtMDProviderMain cannot be started
java.io.IOException: Cannot run program "/opt/ibm/cognos/analytics/bin/BmtMDProviderMain" (in directory "/opt/ibm/cognos/analytics/bin"): error=2, No such file or directory
已完成排查:
- 两个报错文件均存在于指定路径
- 执行
ldd BIBusTKServerMain和ldd BmtMDProviderMain显示为非动态可执行文件 - 手动运行
./BIBusTKServerMain仍提示“文件或目录不存在” - 已按IBM文档配置
$LD_LIBRARY_PATH为/opt/ibm/cognos/analytics/bin64:/opt/ibm/cognos/analytics/bin,问题未解决
解决方案
1. 安装32位运行库
Cognos 12部分二进制文件为32位,Ubuntu 22.04默认64位环境需补充32位依赖:
sudo apt-get update sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386
2. 修复文件执行权限
确保目标文件拥有可执行权限:
sudo chmod +x /opt/ibm/cognos/analytics/bin/BIBusTKServerMain sudo chmod +x /opt/ibm/cognos/analytics/bin/BmtMDProviderMain
3. 检查文件系统挂载属性
若Cognos安装目录所在文件系统启用noexec属性,会阻止二进制执行。先检查挂载属性:
mount | grep $(df -P /opt/ibm/cognos/analytics | tail -1 | awk '{print $1}')
若输出含noexec,修改/etc/fstab移除该属性后重新挂载:
sudo mount -o remount,rw,exec /opt/ibm/cognos/analytics所在挂载点
4. 用strace诊断隐藏依赖
即使ldd显示非动态可执行,仍可能存在隐性依赖缺失,通过strace跟踪执行过程:
strace ./BIBusTKServerMain
查看输出中标记ENOENT的条目,安装对应缺失库。
5. 确保环境变量全局生效
直接在Cognos启动脚本中添加环境变量,避免仅当前终端生效:
编辑启动脚本(如cogconfig.sh或startup.sh),在开头加入:
export LD_LIBRARY_PATH=/opt/ibm/cognos/analytics/bin64:/opt/ibm/cognos/analytics/bin:$LD_LIBRARY_PATH
保存后重新启动服务。
内容的提问来源于stack exchange,提问作者Debojyoti

