用rpmbuild制作rpm包时用到很多宏变量,一般在/usr/lib/rpm/macros定义。不过在/usr/share/vim/vimfiles/template.spec有一个变量%{?dist}不在其中,一番查询之后在/etc/rpm/macros.dist中发现其定义,这个文件包含在redhat-release-server-6Server中。
man一下rpmbuild,它会自动查找/usr/lib/rpm/macros、/usr/lib/rpm/redhat/macros、/etc/rpm/macros、~/.rpmmacros这四个宏配置文件,也会自动加载/usr/lib/rpm/rpmrc、/usr/lib/rpm/redhat/rpmrc、/etc/rpmrc、~/.rpmrc这四个配置文件,不过这八个文件都不是它安装的。
spec文件的内容有些混乱,%prep的作用是在rpmbuild源码中定义(build/build.c),%setup说是宏,在源码中也说是宏,不过似乎是用函数定义的各个功能参数,而不是宏展开(build/parsePrep.c)。%configure是宏,定义在/usr/lib/rpm/macro中。rpmbuild为什么能找到/etc/rpm/macros.dist中定义的宏,没找到出处,也许也是在源码中某个位置定义的这个目录。
rpm --showrc或rpmbuild --showrc可以显示所有rpmrc和macros定义的变量值。不过这个命令的输出很详细,不方便快速查找,可以用rpm --eval "%{?dist}“来查询。有趣的是在rpm的man中查不到eval的说明,有时间在追踪一下。
阅读(6966) | 评论(0) | 转发(0) |