Centos RPM包制作说明
准备打包环境
1、centos系统下使用如下命令安装rpmbuild
#yum install rpmbuild
2、rpmbuild的工作目录如下,
~/rpmbuild
~/rpmbuild/SOURCES
~/rpmbuild/SPECS
~/rpmbuild/BUILD
~/rpmbuild/RPMS
~/rpmbuild/SRPMS
3、如果你的用户目录主目录下没有类似目录结构,你可以通过一个工具软件来自动配置和生成,如下:
#yum install rpmdevtools
下了运行自动配置命令自动生成如上目录,并配置一些必要操作。
#rpmdev-setuptree
rpmdev-setuptree命令默认将再当前用户主目录下创建一个RPM构建根目录结构,
说明:如果需要改变次默认位置,可以修改配置文件:~/.rpmmacros中变量_topdir对应的值即可。
一般rpmbuild会在当前用户的主目录下自动建立如上目录结构,如果在你对应用户的构建目录中没有自动建立如上目录,你可以通过手动方式建立。上面目录的使用是这样分配的,SOURCES放置打包资源,包括源码打包文件和补丁文件等;SPECS目录放置SPEC文档;BUILD打包过程中的工作目录;RPMS目录存放生成的二进制包,RPM包根据硬件平台不同分类,i386表示生成i386结构的包将存放在该目录下;SRPMS目录存放生成的源码包。
制作rpm包:
1、把对应的源码进行tar包制作,然后拷贝到~/rpmbuild/SOURCES目录下。
2、把spec文件拷贝到~/rpmbuild/SPECS
3、在~/rpmbuild/SPECS下执行rpmbuild –ba *.spec ,如果没有Error则会在目录~/rpmbuild/RPMS下生成所需要的rpm包
注:
1.1)如果出现依赖错误,直接安装需要的包就可以
1.2)关于源码包tar包的名字需要根据spec文件进行命名
关于spec文件解释如下
Name软件名称
Version软件版本
Release软件分支
Summary一句话介绍
Group软件所属组
License软件产权
URL软件主页
Source源码位置
PatchPatch位置
BuildArch编译架构
BuildRoot安装目录,重要
BuildRequires编译依赖包
Requires安装依赖包
%description详细的介绍信息
%define用来定义和修改macro变量,macro变量用%{macro}来引用
安装前处理%prep
%setup便捷的解压macro
%patch便捷的打patch工具
编译处理%build
%build通常是./configure && make
测试处理%check
%check通常是make test
安装阶段%install
%install特别注意这个阶段是将编译好的软件安装到\$BUILDROOT下,通常是make DESTDIR=%{buildroot} install
清理阶段%clean
%clean主要进程一些安装后的清理工作,比如清理BUILD目录下的临时文件
文件列表%file
此段主要设置安装到系统上的文件和目录的属性,注意所有安装到系统上的文件都要在此段声明,否则制作就不成功。
%defattr(,, , )用来定义默认属性
%config(noreplace)用来制定配置,升级是不会被覆盖
%attr(mode,user, group) 单独指定属性
%doc指定文件为帮助文档
改动日志%changelog
- 有特定格式来指定文件变动信息
脚本段Scriptlets
- %pre和%post用于安装前后指定的脚本
- %preun和%postun用于卸载前后执行的脚本
- %pretrans和%posttrans用于一个事务前后的操作
rpmbuild用法
编译选项
- -ba 构建二进制和源码包
- -bb 构建二进制包
- -bp 执行到%prep段
- -bc 执行到%build段
- -bi 执行到%install段
- -bl 通过%file进行列表检查
- -bs 构建源码包
- --sign 给软件包签名
- --rebuild 编译源码包并安装
- --showrc 查看配置文件内容
参考文献: