CentOS RPM包制作原理

有时候为了部署自己的包更方便一些,我们会制作自己的RPM包,制作RPM包都有哪些步骤呢,学习这些步骤就是本文的目的。在CentOS下制作RPM包依赖rpm-build这个包,所以需要提前安装好该软件包。

RPM生成要素

  1. 生成rpm所用的文件列表或者源代码
  2. 根据文件列表或者源代码生成rpm规范,也就是spec文件
  3. 根据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 #确定包的最终使用平台

相关阅读:

相关推荐