在RPM规范文件中使用宏

时间:2015-10-29 09:30:35

标签: rpm rpmbuild rpm-spec

我制作了一些spec文件来构建RPM。我使用一些命令,如cp或ln或chown。 我认为宏可以帮助使用安装RPM的系统中的特定版本,所以我使用%{__ cp}%{__ ln_s}等内容。 RPM建立在CentOS 7上,但现在我尝试将它安装到CentOS 6上,我得到的错误是/ usr / bin /中找不到cp和ln,但它们确实存在于/ bin

/var/tmp/rpm-tmp.ElF6f7: line 46: /usr/bin/chown: No such file or directory
/var/tmp/rpm-tmp.ElF6f7: line 49: /usr/bin/cp: No such file or directory

在CentOS 7中,它们也存在于/ bin和/ usr / bin

所以现在我想知道,为什么要使用这些宏,是不是更容易使用cp和ln和chown就像它们一样? 我认为对于我的情况会更好,因为我不会仅针对特定的发行版进行包装,他们应该使用很多发行版。

1 个答案:

答案 0 :(得分:1)

你是对的,有时候不惜一切代价使用宏会产生反作用。

此外,如果我从其他编程语言应用命名空间逻辑,则具有两个非期望值(例如%{__cp})的宏意味着只是内部。即它们用于定义其他宏,但不应直接使用。

虽然存在大量使用并且不时被覆盖的宏(例如%{_smp_mflags}或各种目录名称),但存在只会混淆读取的宏,例如%{__mkdir_p}.其他人意味着你可以查询他们%{_buildshell}。使用/usr/bin/bash foo.sh而不是%{_buildshell} foo.sh执行shell脚本会更安心。