我已经花了大约 3 个小时。如何在 rpm 构建期间覆盖宏?我想将 _sbindir (/usr/sbin) 覆盖为 /opt/sbin 我已经编辑了 rpm 宏文件(系统文件和本地用户文件),但似乎没有任何效果。我正在使用 Fedora 12。
答案1
不要尝试覆盖 _foo 宏。但如果必须,请将其添加到 spec 文件的顶部。
%define _sbindir /foo
答案2
您是否尝试过从命令行定义它rpmbuild
?--showrc
开关向您显示定义各种宏的“级别”。如果在多个地方定义某个宏,则存在层次结构,其中 -8(命令行)优于 -14(磁盘,即 ~/.rpmmacros 文件)。
$ rpmbuild --showrc | grep ' _sbindir'
-14: _sbindir %{_exec_prefix}/sbin
%global _sbindir %{_exec_prefix}/sbin
$ rpmbuild --define "_sbindir /tmp/wtf" --showrc | grep ' _sbindir'
-8: _sbindir wtf
%global _sbindir %{_exec_prefix}/sbin
值得一提的是,在我的 CentOS-6 主机上,它%global
是在 /etc/rpm/macros.scl 文件中定义的。