系统架构:
系统:centos-stream 9、centos 7
mysql版本:5.7.44 8、9版本
libtirpc软件包
libtirpc 是一个库,它实现了 Tiny RPC(远程过程调用)协议。Tiny RPC 是一种轻量级的 RPC 协议,它允许应用程序通过网络调用远程机器上的函数,就像调用本地函数一样。libtirpc 提供了一个简单的 API 来实现跨网络的进程间通信(IPC),并且它支持 Unix 域套接字和 TCP/IP。
MySQL 使用 libtirpc 主要是为了支持其集群功能(NDB Cluster),这是 MySQL 的一个存储引擎,能够提供高可用性和数据分布能力。NDB Cluster 存储引擎依赖于 Tiny RPC 协议来实现节点间的通信。
当你尝试从源码编译 MySQL 并且使用了集群特性时,编译器会寻找 libtirpc 库以及相关的头文件来完成编译过程。如果没有安装 libtirpc 及其开发文件,编译过程将无法找到必要的头文件和库文件,从而导致编译失败。
通常,在 Linux 发行版中,libtirpc 和其开发文件作为单独的软件包提供,例如 libtirpc 和 libtirpc-devel(用于编译时包含的头文件和其他构建文件)。
(可以用过dnf或yum来完成安装。)
错误现象:
-- Not building NDB
-- Checking for module 'libtirpc'
-- Package 'libtirpc', required by 'virtual:world', not found
CMake Error at cmake/rpc.cmake:76 (MESSAGE):
Could not find rpc/rpc.h in /usr/include or /usr/include/tirpc
Call Stack (most recent call first):
rapid/plugin/group_replication/configure.cmake:60 (MYSQL_CHECK_RPC)
rapid/plugin/group_replication/CMakeLists.txt:25 (INCLUDE)
-- Configuring incomplete, errors occurred!
yum安装libtiripc依赖包
curl -O https://mirrors.aliyun.com/rockylinux/9.4/devel/x86_64/os/Packages/l/libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm
yum -y install libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm
dnf -y install libtirpc-devel-1.3.3-8.el9_4.x86_64.rpm
使用dnf或yum安装完之后可能依然会上面错误。所以建议源代码安装。
源代码安装libtirpc依赖包
curl -O https://jaist.dl.sourceforge.net/project/libtirpc/libtirpc/1.3.6/libtirpc-1.3.6.tar.bz2
./configure --prefix=/usr \
--sysconfdir=/etc \
--disable-static \
--disable-gssapi &&
make && make install