有时候为了部署自己的包更方便一些,我们会制作自己的RPM包,制作RPM包都有哪些步骤呢,学习这些步骤就是本文的目的。在CentOS下制作RPM包依赖rpm-build这个包,所以需要提前安装好该软件包。
RPM生成要素
生成rpm所用的文件列表或者源代码
根据文件列表或者源代码生成rpm规范,也就是spec文件
根据spec文件加工源码/文件的工具rpmbuild
在RedHat下,rpm包的默认制作路径在/usr/src/redhat下:
/usr/src/redhat
--BUILD #编译之前,如解压包后存放的路径
--BUILDROOT #编译后存放的路径
--RPMS #打包完成后rpm包存放的路径
--SOURCES #源包所放置的路径
--SPECS #spec文档放置的路径
--SPRMS #源码rpm包放置的路径
centos并没有该目录,这可咋办,其实在那个目录制作rpm是没有关系的,只要设置好配置文件就行。一般我们都把源码打包成tar.gz格式然后存放于SOURCES路径下,而在SPECS路径下编写spec文档,通过命令打包后,默认会把打包后的rpm包放在RPMS下,而源码包会被放置在SRPMS下。
先看看rpmbuild命令的用法:
1 从spec文档建立有以下选项:
-bp #只执行spec的%pre 段(解开源码包并打补丁,即只做准备)
-bc #执行spec的%pre和%build 段(准备并编译)
-bi #执行spec中%pre,%build与%install(准备,编译并安装)
-bl #检查spec中的%file段(查看文件是否齐全)
-ba #建立源码与二进制包(常用)
-bb #只建立二进制包(常用)
-bs #只建立源码包
2 从tarball包建立,与spec类似
-tp #对应-bp
-tc #对应-bc
-ti #对应-bi
-ta #对应-ba
-tb #对应-bb
-ts #对应-bs
3 从源码包建立
--rebuild #建立二进制包,通-bb
--recompile #同-bi
* rpmbuild的其他参数
--buildroot=DIRECTORY #确定以root目录建立包
--clean #完成打包后清除BUILD下的文件目录
--nobuild #不进行%build的阶段
--nodeps #不检查建立包时的关联文件
--nodirtokens
--rmsource #完成打包后清除SOURCES
--rmspec #完成打包后清除SPEC
--short-cricuit
--target=CPU-VENDOR-OS #确定包的最终使用平台