本机环境:centos7,64位
1. 首先安装工具,rpmbuild可能在rpmdevtools里已经包含
#yum install rpm-devel.x86_64
#yum install rpmdevtools
2. 执行如下rpmdev-setuptree生成rpmbuild的工作目录(会在当前用户的根目录下生成rpmbuild目录)
#rpmdev-setuptree
3. 查看生成的rpmbuid工作目录
#cd ~/rpmbuild/
#ls
结果如下图所示
[ump@localhost rpmbuild]$ ls BUILD RPMS SOURCES SPECS SRPMS
目录含义解释如下:
SOURCES #放置打包资源,包括源码打包文件和补丁文件
SPECS #放置SPEC文档
BUILD #打包过程中的工作目录
RPMS #存放生成的二进制包
RPMS/i386 #存放生成的i386结构包
SRPMS #存放生成的源码包
2 撰写SPEC文档
----------------------------------------------------------
#软件包简要介绍
Summary: hellorpm is a test program。
#软件包的名字
Name: hellorpm
#软件包的主版本号
Version: 2.2.6
#软件包的次版本号
Release: 1
#源代码包,默认将在上面提到的SOURCES目录中寻找
Source0: %{name}-%{version}.tar.gz
#授权协议
License: GPL
#定义临时构建目录,这个地址将作为临时安装目录在后面引用
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
#软件分类
Group: Development/Tools
#软件包的内容介绍
%description
The hellorpm program is a test.
#表示预操作字段,后面的命令将在源码代码BUILD前执行
%prep
#构建BUILD环境,将解压源码压缩包到BUILD目录
%setup -q
#BUILD字段,将通过直接调用源码目录中自动构建工具完成源码编译操作
%build
#调用源码目录中的configure命令
./configure
#在源码目录中执行自动构建命令make
make
#安装字段
%install
#调用源码中安装执行脚本
make DESTDIR=$RPM_BUILD_ROOT install
#文件说明字段,声明多余或者缺少都将可能出错
%files
#设置文件权限属性
%defattr(-,root,root)
#声明/usr/local/bin/hellorpm将出现在软件包中
/usr/local/bin/hellorpm
#声明并设置文件属性
%doc %attr(0444,root,root) /usr/local/man/man1/hellorpm.1
#同上,声明文档文件
%doc README
-----------------------------------------------------------------------------------
这个文档需要说明的一点:
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
上面BuildRoot变量表示的是源码的临时按照目录,rpmbuild就是通过次目录
获得将要按照到系统中的所有文件,而在SPEC文档后面make install
命令中的参数DESTDIR=$RPM_BUILD_ROOT即是对该参数的引用,这个参数将传给Makefile文件一告诉自动构建工具应该安装文件那
里(实际上我再前文提到过的Makefile需要作一些改造以适应RPM的构建就包括此操作,你的Makefile文件中至少要知道在RPM构建过程中引
用此参数的值去控制安装操作的目标)。
如上一个简单的SPEC文档撰写完成,下面把一个名为hellorpm-2.2.6.tar.gz的源码压缩文件放到
rpmbuild根目录下的SOURCES目录下(注,确保此归档文件解压后的目录为hellorpm-2.2.6,
否则会有问题)。
到此一个完整的rpm打包环境已经构建完成,下面我们就可以开始构建二进制和源代码RPM包。
3 构建RPM包
构建RPM包是有命令rpmbuild在SPEC的指导下完成。
开始构建操作,首先进入到当前用户的rpmbuild根目录(即上面提到的目录环境)。
#cd ~/rpmbuild/
执行如何命令,-ba表示build all,即生成包括二进制包和源代码包的所有RPM包,下来如果正常的话,rpmbuild将正常退出,同时在RPMS目录和SRPMS目录中将生成对应的RPM包。
#rpmbuild -ba SPECS/hellorpm.spec
这里仅仅介绍了一个最简单软件的最简单的RPM的打包操作过程,诸如带有共享文件的需要进行复杂配置的具有复杂依赖关系的等等的项目的打包以及后期的维护,包括补丁的制作我将在下来的时间完成补充更新,今天时间不早了,该休息了!
http://www.linuxsir.org/main/?q=node/50 RPM 的介绍和应用(北南兄)
http://www.ibm.com/developerworks/cn/linux/management/package/rpm/part3/ 用 RPM 打包软件
http://hlee.javaeye.com/blog/343499 RPM包rpmbuild SPEC文件深度说明