rpm 打包环境--centos 6.5,

第一步:

先看下当前的环境是否有rpmbuild工具。如果没有,可以在这个网址下载。

http://rpmfind.net/linux/rpm2html/search.php?query=rpm-build

由于rpm包安装比较简单,相对与源码安装来说不需要编译等操作,所以在缺少一些工具时,还是推荐使用上面的网址下载相应的rpm包。

安装时,如果还依赖其他的包,会出现提示,这时候,同样在上面的网址寻找提示版本号的依赖工具安装就行。

(如果可以连网的话。可以直接使用yum 命令,这样依赖的包会自动一起安装)

第二步:

不同的系统,rpmbuild默认路径会不同,此时可以使用rpm --showrc 查看rpmbuild 的相关信息,包括一些路径名等的宏定义。

我是用的centos 系统中,默认是在/root/rpmbuild下。rpmbuild需要用到的BUILD、BUILDROOT、SOURCE、RPMS、SPECS此时已经创建好了

有的帖子上说,这几个路径需要手动创建,可能不同版本不太一样。

第三步:

rpmbuild工具装好之后,首先需要对其有一个基本的了解。

例如,rpmbuild 的目标就是将源码包打包成rpm包,安装时就减少了编译的步骤。

但是这里有两个问题大部分帖子上说的都比较模糊。下面是我自己的一些心得整理

1、首先要明确的是,打包和安装一般来说不会是在一个机器上(要验证自己的脚本是否正确,最好用两台机器验证)。

所以可以这么理解,现在有两台机器,一个是源码包的来源机器,一个是rpm包的安装目标机器。

2、源码包的来源机也是你自己的实验机,你的代码,编译工具,相关安装包都在该机器上。而目标安装机器上可能什么也没有

3、此时你需要做的就是在源码机上实现一个脚本(实际上是spec脚本中的某几个部分实现),对你的代码进行预处理、编译、打包等。

4、然后将编译打包后的rpm包上传到目标机器上。再在目标机器上实现另一个脚本(spec脚本的另外几个部分实现),完成解压,安装等处理。

先搞清楚上面的几点,可能对rpm包的制作方法就有个一个大概的了解。

第四步:

开始写脚本啦.

rpm的脚本是spec脚本。网上有很多关于spec脚本的说明,大家可以参照这篇:

里面介绍了spec脚本的关键字和一些标准宏定义。这里截取比较重要的部分简单说明一下。

%pre rpm安装前执行的脚本

%post rpm安装后执行的脚本

%preun rpm卸载前执行的脚本

%postun rpm卸载后执行的脚本

 

%preun %postun 的区别是什么呢?

前者在升级的时候会执行,后者在升级rpm包的时候不会执行

%files 定义那些文件或目录会放入rpm中

%exclude 列出不想打包到rpm中的文件

注意:如果%files或者%exclude指定的文件不存在,会出错的。

 

 第五步:

可以先将需要打包的文件压缩到固定目录

完成spec脚本之后开始打包

使用 rpmbuild -xx xxx.spec 就可以制作rpm包啦.具体可以参考:http://blog.sina.com.cn/s/blog_4ba5b45e0102e5r2.html

下面同样只截取部分说明:

#rpmbuild
-bp 只作准备 (解压与打补丁)
-bc 准备并编译
-bi 编译并安装
-bl 检验文件是否齐全
-ba 编译后做成*.rpm和src.rpm
-bb 编译后做成*.rpm
-bs 只做成*.src.rpm 

制作好的.rpm包,就可以使用rpm命令在其他机器上安装啦~