OM安装后,linux命令报错openssl不兼容

2023年 10月 25日 40.7k 0

概述

在部分系统中,使用 OM 安装完成 openGauss 数据库后,会出现例如 yum install 不可用, 或者 ssh 不可用的问题。

问题现象

  1. 在 openeuler20.03 系统上,使用 openGauss 3.0.3 之前的版本,OM 安装完成后,切换到 root 下使用 yum 安装组件,会出现如下错误:

    symbol SSLv3_method version OPENSSL_1_1_0 not defined in file libssl.so.1.1 with link time reference

  2. 在一些高版本系统中,如 centos8 以上。安装完成数据库后,使用 ssh 报错: 

问题原因

为了保证兼容和稳定,openGauss 在开源三方库里面引入了 openssl 组件进行管理和维护,这样依赖会导致 openGauss 使用的 openssl 版本和操作系统上自带 openssl 版本的可能存在不兼容的问题。

OM 安装完成后,会再 /etc/profile 里面写入自身的环境变量,如下:

export GPHOME=/opt/huawei/install/om
export UNPACKPATH=/opt/software/openGauss
export PATH=$PATH:$GPHOME/script/gspylib/pssh/bin:$GPHOME/script
export LD_LIBRARY_PATH=$GPHOME/script/gspylib/clib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$GPHOME/lib:$LD_LIBRARY_PATH
export PYTHONPATH=$GPHOME/lib
export PATH=$PATH:/root/gauss_om/omm/script

其中的LD_LIBRARY_PATH会将 openGauss 包中 lib 目录下的 so 库文件优先级提前,在使用如 yum 命令时候,就会优先去加载 openGauss lib 目录下的二级制。

而 openGauss lib 下放着 libssl.so 和 libcrypto.so ,这两个输入 openssl 的库文件。如果此时存在不兼容,那么在使用操作系统工具时候,如果工具依赖了 openssl 的相关不兼容函数,就会报错。

  1. 编译选项不同导致不兼容

symbol SSLv3_method 就是由于编译选项引起的不兼容现象。早起 openGauss-third-party 中的 openssl 在编译时候并未开启 sslv3-method,但是操作系统 yum 所依赖的二进制需要用到 sslv3 相关的函数,就导致报错 sslv3-method symbol not found。

  1. 系统上对 openssl 做修改导致接口不兼容

在 Centos 8 以及相关的发行版中,操作系统自身对 openssl 做了很大的 patch 改动,其中存在对接口函数的增加和删除。 undefined symbol EVP_KDF_ctrl报错就是场景之一。 在原始的 openssl 中具有该函数,但是在 Centos8 系统上却对该函数做了删除。 此时安装了 openGauss 后,在 openGauss 的环境变量下,部分工具必然会出现问题。

处理方式

  1. 对于 symbol SSLv3_method not found, 可以更新下三方库,在构建 openssl 的时候开启编译选项 enable-ssl3-method

  2. 对于 OM 安装过程中出现 undefined symbol EVP_KDF_ctrl 问题,可以把系统上的 libcrypto.so 放到 $TOOL/script/gspylib/clib 替换掉 om 包里面的 lib 文件

  3. 同意对于 OM 安装过程中出现问题的场景,由于 OM 需要依赖一些开源组件如 psutil,paramiko 等,这些组件编译的二进制文件依赖 openssl 进而产生了不兼容问题,可以在操作系统上手动安装如下四个组件:

    psutil
    netifaces
    cryptography
    paramiko

    然后 OM 安装时候, preinstall 加上 --unused-third-party 即可使用系统的组件替代 OM 包中的组件,进而规避该问题。

    ./gs_preinstall -U xx -G xx -X /xx/single.xml --unused-third-party

  4. 对于在安装后,使用 ssh 工具出现 undefined symbol EVP_KDF_ctrl 问题的场景; 可以再在使用 ssh 之前, 把系统的 lib 库库优先级放到前面,就不会影响 ssh。

    export LD_LABRRRY_PATH=/usr/lib64:$LD_LABRRRY_PATH;ssh 192.168.0.100 command;

    这个问题由于系统自身对 openssl 做了修改,尤其在 Centos8 上, 删除 openssl 中的函数在 openGauss 中还继续使用,该兼容问题无法解决,只能通过加载环境变量的优先级方式来规避。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论