CentOS7(aarch64)编译MySQL客户端时RPM构建失败求助
在CentOS7(aarch64)重建MySQL源码RPM失败的原因分析
问题场景
执行rpmbuild --rebuild --clean MySQL-VERSION.src.rpm构建MySQL客户端时,接近完成阶段抛出错误,核心报错及RPM构建日志如下:
[ 82%] Built target mysqlpump_lib make[2]: Leaving directory `/root/rpmbuild/BUILD/mysql-5.7.39/debug' make[1]: *** [libmysqld/CMakeFiles/sql_embedded.dir/all] Error 2 make[1]: Leaving directory `/root/rpmbuild/BUILD/mysql-5.7.39/debug' make: *** [all] Error 2 error: Bad exit status from /var/tmp/rpm-tmp.MolOTB (%build) RPM build errors: mysql-community-5.7.39-1.el7.src.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY user pb2user does not exist - using root group common does not exist - using root ...(重复的用户/组不存在警告) Bad exit status from /var/tmp/rpm-tmp.MolOTB (%build)
错误原因拆解
1. 嵌入式MySQL库构建失败(主因)
libmysqld/CMakeFiles/sql_embedded.dir/all报错是导致构建终止的核心原因。MySQL 5.7的嵌入式服务器组件(libmysqld)在CentOS7 aarch64架构下存在兼容性问题,要么是官方对该架构的嵌入式支持不完善,要么是构建时缺少特定依赖,导致编译或链接环节失败。
2. RPM包签名未验证(警告,非主因)
NOKEY提示系统未导入MySQL官方GPG密钥,这只是完整性验证警告,不会直接中断构建,但建议解决以避免后续包管理问题。
3. 构建用户/组不存在(警告,非主因)
RPM spec脚本指定用pb2user用户和common组构建,但系统中没有这两个身份,自动 fallback 到root。这可能引发文件权限异常,但不是本次构建失败的直接原因。
对应解决方向
- 跳过嵌入式组件构建:如果只需要客户端,修改RPM spec文件,给CMake添加
-DWITH_EMBEDDED_SERVER=OFF参数,跳过嵌入式服务器的编译。 - 补全构建依赖:确保安装所有必需的开发包:
yum install gcc-c++ cmake ncurses-devel openssl-devel zlib-devel bison-devel。 - 导入GPG密钥:执行
rpm --import RPM-GPG-KEY-mysql-2022(对应MySQL 5.7的官方密钥)消除签名警告。 - 创建指定用户/组:执行
groupadd common && useradd -g common pb2user,让构建过程使用预期的身份,避免权限隐患。
内容的提问来源于stack exchange,提问作者kdGeorgiev
相关产品推荐
相关产品推荐

