Chinaunix首页 | 论坛 | 博客
  • 博客访问: 317996
  • 博文数量: 122
  • 博客积分: 1395
  • 博客等级: 中尉
  • 技术积分: 1340
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-03 20:40
个人简介

智者,既能奋发不休,又能尽人事,顺天命

文章分类

全部博文(122)

文章存档

2014年(39)

2013年(46)

2012年(12)

2011年(3)

2010年(20)

2009年(2)

我的朋友

分类: LINUX

2013-06-09 11:18:01

用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的说明,有时间在追踪一下。

阅读(6864) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~