如何覆盖 rpm 宏

如何覆盖 rpm 宏

我已经花了大约 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 文件中定义的。

相关内容