You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Rocky 9.5下RTI Kafka适配器适配OpenSSL 3.2.2失败问题

解决RTI Kafka适配器在Rocky 9.5适配OpenSSL 3.2.2的问题

问题本质

报错librtikafkaadapter.so: /lib64/libldap.so.2: undefined symbol: EVP_md2, version OPENSSL_3.0.0的核心原因是:系统自带的libldap.so.2编译时依赖带OPENSSL_3.0.0版本标记的EVP_md2符号,但OpenSSL 3.2.2的legacy provider仅提供无版本标记的该函数,导致动态链接器无法匹配。

可行解决方案

1. 进程级强制加载OpenSSL Legacy Provider

通过环境变量让RTI Routing Service进程强制加载legacy provider,确保符号被正确解析:

# 直接启动命令
OPENSSL_CONF=/etc/ssl/openssl.cnf LD_PRELOAD=/usr/lib64/libcrypto.so.3 rtiroutingservice -cfg your_routing_config.xml

或者写入启动脚本:

export OPENSSL_CONF=/etc/ssl/openssl.cnf
export LD_PRELOAD=/usr/lib64/libcrypto.so.3
rtiroutingservice -cfg your_routing_config.xml

提示:若libcrypto.so.3路径不符,用find /usr -name libcrypto.so.3确认实际路径

2. 重新编译OpenLDAP适配OpenSSL 3.x

系统自带的libldap.so.2基于旧版OpenSSL编译,重新编译链接当前系统的OpenSSL 3.2.2:

  1. 安装编译依赖:
    dnf install openldap-devel openssl-devel make gcc autoconf automake
    
  2. 下载与系统版本匹配的OpenLDAP源码(推荐2.6.x系列),解压后编译:
    ./configure --prefix=/usr --with-tls=openssl --disable-static
    make -j$(nproc)
    sudo make install
    
  3. 执行sudo ldconfig更新系统库缓存,确保新编译的libldap.so.2被优先加载。

3. 为RTI服务指定自定义库路径(临时绕过)

若不想替换系统库,可将编译好的适配OpenSSL 3.x的libldap库放在单独目录,启动时指定:

LD_LIBRARY_PATH=/path/to/custom_openldap_lib:$LD_LIBRARY_PATH rtiroutingservice -cfg your_routing_config.xml

4. 修正RTI Kafka适配器的编译配置

重新编译适配器时,确保链接系统当前的OpenSSL 3.2.2库,而非编译环境自带的旧版:

  1. 编译时指定OpenSSL路径:
    cmake -S . -B build \
      -DOPENSSL_ROOT_DIR=/usr \
      -DOPENSSL_INCLUDE_DIR=/usr/include/openssl \
      -DOPENSSL_LIBRARIES=/usr/lib64/libcrypto.so.3
    cmake --build build
    
  2. 用ldd build/librtikafkaadapter.so检查依赖,确认libcrypto.so.3是系统路径下的版本。

内容的提问来源于stack exchange,提问作者rocksNwaves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:25:16