问题现象
在麒麟操作系统使用 RPM 安装低版本 OceanBase 数据库时报错 Failed Dependencies, libcrpto.so.10; libssl.so.10,然而在 /usr/lib64 目录下可以看到相关的 so 文件。
[root@kylin10-vm129 ~]# rpm -ivh /tmp/oceanbase-2.2.52-20210716164935.el7.aarch64.rpm
error: Failed dependencies:
libcrypto.so.10()(64bit) is needed by oceanbase-2.2.52-20210716164935.el7.aarch64
libcrypto.so.10(libcrypto.so.10)(64bit) is needed by oceanbase-2.2.52-20210716164935.el7.aarch64
libssl.so.10()(64bit) is needed by oceanbase-2.2.52-20210716164935.el7.aarch64
[root@kylin10-vm129]# rpm -ivh /tmp/oceanbase-2.2.30-20220518184158.el7.aarch64.rpm
error: Failed dependencies:
libcrypto.so.10()(64bit) is needed by oceanbase-2.2.30-20220518184158.el7.aarch64
libcrypto.so.10(libcrypto.so.10)(64bit) is needed by oceanbase-2.2.30-20220518184158.el7.aarch64
libssl.so.10()(64bit) is needed by oceanbase-2.2.30-20220518184158.el7.aarch64
问题原因
使用 RPM 包安装 OceanBase 数据库时会检查相关依赖。
低版本(如 OceanBase 数据库企业版 V2.2.30 版本)的 OceanBase 数据库依赖 openssl 的相关版本,比如需要依赖
libssl.so.10、liblibcrypto.so.10文件。如果在麒麟环境中不存在libssl.so.10、liblibcrypto.so.10或者安装了其他版本的openssl,则会出现报错。如果麒麟环境的
openssl版本在 OBServer 的依赖版本之上, 虽然会报错, 但是因为openssl是向下兼容的,所以如果使用rpm选项--nodeps安装后理论上不会影响使用。 在麒麟的操作环境中通过rpm -qa | grep openssl可以看到相应麒麟环境中安装的openssl。高版本(从 OceanBase 数据库企业版 V2.2.7x 版本开始)将
openssl的依赖修改成了静态连接集babassl库,因此不会出现rpm安装时检测不到这两个文件从而报错的问题。
问题的风险及影响
采用 rpm --nodeps 安装后不确定是否影响 OceanBase 数据库后续的运行和使用。
影响的版本
OceanBase 数据库企业版 V2.2.5x 以及以下版本。
解决方法及规避方式
安装时需确定 openssl 是否安装,以及版本是否正确:
若
openssl已经安装,或者是已经安装了高于 OceanBase 数据库依赖版本的openssl,可使用rpm -ivh --nodeps安装跳过该问题。同时也需要验证是否ssl相关feature正常工作。例如通过修改ssl_client_authentication = True之后,使用mysql --ssl选项登录,查看是否能够开启ssl。因为加密功能在各版本的实现程度不同 (特别是低版本),强烈建议在测试环境中测试,而非直接在生产环境验证。注意
建议在测试环境测试验证而非直接在生产环境进行验证。
如果环境未安装
openssl,建议先进行openssl安装。