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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:30:29