执行yum命令时频繁出现「Macro % has illegal name (%define)」错误的排查求助
解决Yum命令触发「Macro % has illegal name (%define)」错误的排查步骤
我之前帮不少用户解决过类似的yum宏定义错误,这个问题的核心几乎都是配置文件里的宏语法不符合rpm规范,给你几个靠谱的排查步骤:
检查yum主配置与repo文件
先排查最常见的错误来源:- 打开
/etc/yum.conf,搜索所有包含%define的行,确认宏名是否合法(不能有空格、特殊字符,只能是字母、数字或下划线),语法格式是否为%define 宏名 宏值的正确形式。 - 遍历
/etc/yum.repos.d/下的所有.repo文件,同样检查是否存在错误的%define语句——很多时候是复制粘贴配置时不小心引入了多余符号,或者宏名写错了。
- 打开
排查rpm宏配置文件
yum依赖rpm的宏定义,所以还要检查rpm的宏文件:- 查看
/etc/rpm/macros文件,里面如果有自定义的%define,逐一验证格式正确性。 - 检查
/usr/lib/rpm/macros.d/目录下的所有文件,同样搜索%define相关行,排查语法错误。
你可以用这条命令快速定位所有相关行:
grep -r "%define" /etc/rpm/ /usr/lib/rpm/macros.d/- 查看
临时禁用自定义宏排查
如果不确定哪个文件出问题,可以先临时禁用自定义宏:- 重命名
/etc/rpm/macros为/etc/rpm/macros.bak - 把
/usr/lib/rpm/macros.d/下你自己添加的宏文件(比如非系统默认的)重命名为.bak后缀
之后再执行yum命令,如果错误消失,就说明是这些自定义宏的问题,再逐个恢复文件排查具体哪一行出错。
- 重命名
重建rpm数据库
有时候rpm数据库损坏也会引发奇怪的语法错误,尝试重建数据库:rpm --rebuilddb完成后再测试yum命令是否正常。
检查第三方yum插件
某些第三方yum插件可能会注入错误的宏定义,你可以:- 查看
/etc/yum/pluginconf.d/目录,把可疑的插件配置文件重命名为.bak - 重启yum命令测试,如果错误消失,就说明是对应插件的问题,要么修复插件配置要么卸载插件。
- 查看
如果以上步骤都没解决,建议对比一台同版本的正常系统,检查rpm和yum相关配置文件的差异,通常能找到问题所在。
内容的提问来源于stack exchange,提问作者Gene
相关产品推荐
相关产品推荐

