Total Pageviews

Saturday 27 October 2012

制作puppet的rpm包


当前puppet的最新版是:http://puppetlabs.com/downloads/puppet/puppet-2.7.6.tar.gz
facter的最新稳定版本是:http://puppetlabs.com/downloads/facter/facter-1.6.2.tar.gz
puppet-2.6.6.tar.gz中的conf/redhat/目录下包含了一个puppet.spec文件,经过简单的修改,就可又直接用来制作rpm包了。
我的当前环境是RHEL-5.7,x86_64。
1. 准备自己的打包环境
确认系统上有rpmbuild命令可用,没有的话,安装rpm-build包。
建议使用个人账号打包,这样需要先初始化一个自己的打包环境:
在自己的home目录建一个rpmbuld目录,
$cd ~
$mkdir rpmbuild
$mkdir rpmbuild/{SOURCES,SPECS,SRPMS,RPMS,BUILD}
然后,在自己的home目录下建一个.rpmmacros 文件,内容如下:
%_topdir    %(echo $HOME)/rpmbuild
对于这次要打包的puppet,puppet.spec中依赖一个rhel宏,你可以写在.rpmmacros文件里,也可以rpmbuild -D ‘rhle 5′这样在打包时指定。
假如写在.rpmmacros文件里,内容如下:
%rhel  5
另外,还有一个建议,假如你想打出来的包的名字是puppet-2.7.6-1.el5.noarch.rpm,那么,在这个文件里写添加一个宏dist
%dist  .el5

2.下载puppet包,还有puppet-2.7.6.tar.gz.asc,这个打src包时,需要。
3.修改puppet.spec文件,官方提供的这个包里的puppet.spec有个错误,搜索http_server,只有一行,将http_server改为http。
4.将这个puppet.spec复制到~/rpmbuild/SPECS下。
5.将修改过的puppet-2.7.6目录重新打包,将包复制到~/rpmbuild/SOURCES目录下。
6. 最后一步,开始打包:
$cd ~/rpmbuild/SPECS
假如~/.rpmmacros里已经写了rhel宏,那么这里就可以直接打包了:
$rpmbuild -ba puppet.spec
假如~/.rpmmacros里没有定义rhel宏,那么命令需要这样写:
$rpmbuild -D ‘rhel 5′ -ba puppet.spec
假如不出意外,打好的包会放在~/rpmbuild/RPMS/noarch目录下。
假如出错,一般是依赖关系的问题,缺少什么,就安装什么包(一般是xxx-devel包),然后重新打包就可以了。
打facter的rpm包与puppet的差不多,将facter-1.6.2.tar.gz解压后,将conf/redhat/facter.spec复制到~/rpmbuild/SPECS下,将facter-1.6.2.tar.gz复制到~/rpmbuild/SOURCES下,然后开始打包:
$cd ~/rpmbuild/SPECS
$rpmbuild -ba facter.spec