rpmbuild制作cfengine rpm包

对cfengine进行定制,自制rpm包。

安装rpm制作工具

 查看宏变量

执行rpmdev-setuptree会在用户家目录创建一个隐藏文件 .rpmmacros ,该文件重定义了一些宏变量,将默认的工作目录改在了用户家目录下的rpmbuild目录。

默认的工作目录

默认的安装目录

spec文件

由于默认的_prefix宏变量值为 /usr,制作的rpm包安装时将会安装到/usr目录下各个目录如/usr/sbin/,/usr/share。如果想将软件安装至单一的目录,需要重定义该变量。一开始尝试过直接修改make install的DESTDIR

但是由于_prefix的影响,软件会安装在/usr/local/cfengine/usr 目录下。

另外configure --prefix=/usr/local/cfengine和Prefix: /usr/local/cfengine也都尝试过,均不起作用。

通过rpm --showrc |grep _prefix看到_prefix变量后,直接修改.rpmmacros,重定义_prefix,可以生效。但是每制作一个包就得重改一次,需要找一种在spec文件中重定义宏变量的方法:

宏(Macros)是使用变量和功能来控制rpm和 rpmbuild 的自定义的行为,宏指令一般地定义在 spec 文件中。语法象 %define macro value .宏指定也可以事先在配置文件中调整。
就是下面的文件。

  • 默认设置为 /usr/lib/rpm/macros or /etc/rpm/macros
  • 用户设置 ~/.rpmmacros

在打包的过程中,spec files 和 rpmbuild 能使用RPM 的宏命令中的变量.
此外,在 rpmbuild 时要不顾当前设置,可以在后面加上 –define=’macro value’ 选项,要显示当前的宏指令可以使用 rpm –eval %{macro} ,也可以rpm –showrc 来 dump 全部当前的宏指令和设置。

引自 http://blog.csdn.net/hncomputer/article/details/7049127

重定义_prefix如下

完整spec如下

查看包信息

查看制作好的rpm包信息

文件列表

 

 参考资料

 

One thought on “rpmbuild制作cfengine rpm包

  1. 不生成debuginfo包[root@HADOOP-215 ~]# echo '%debug_package %{nil}' >> ~/.rpmmacros[root@HADOOP-215 ~]# cat .rpmmacros %_topdir %(echo $HOME)/rpmbuild%_smp_mflags -j3%__arch_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注