RPM包制作

如何准备编译制作一个RPM包

编译制作RPM包,主要包含如下几个步骤:

  • 规划好制作一个什么样的RPM包
  • 搜集相关的软件和压缩包、补丁
  • 创建SPEC文件
  • 制作RPM包
  • 测试验证RPM包

规划好制作一个什么样的RPM包

一般情况下,有如下几种情况会需要制作RPM包

  • 应用程序: 将应用程序制作为RPM包,通过官方文档下载源码包,并进行编译、安装等方式制作为RPM包,从而省去了反复编译的过程;同时,制作成RPM包的时候,也可以将应用程序添加到服务中,当安装之后,可以直接通过Service的方式来控制应用程序的启停操作。
  • 库文件: 直接将库文件进行封装、打包为RPM包,这种情况下,不需要有编译、安装的操作;
  • 系统配置文件: 有时候配置项比较多,配置文件较为复杂的情况下,可以直接将配置文件制作成RPM包;
  • 文档包: 说明文档较多的时候,可以对文档进行打包,制作成一个RPM包,例如: HTTP文档包、MySQL文档包、Java接口文档包,编译管理;
  • 二进制包、源码包,或者双方都包括: 可以事先规划好我们要制作一个编译好的RPM包(只能装在特定平台上)。或者是需要进行编译的RPM源码包,这种RPM源码包一般是src.rpm结尾,RPM源码包内部是由源码包tar.gz + SPEC文件组成,使用的时候直接在当前平台现编译,编译后在当前平台进行安装即可。 这种RPM包具有平台的普适性。缺点也很明显,就是需要使用者进行手动编译;

创建SPEC文件

SPEC文件是制作RPM的关键所在,SPEC文件中不仅定义了软件包的Name、Version、License、Vendor、URL、Summary、编译依赖、安装依赖等软件的基本信息,还定义了解压、编译、安装、升级时,具体要执行的动作,是否将软件添加到系统服务中, 以及卸载RPM前后,去哪些目录下删除对应的文件,是否要删除相关账号等。SPEC文件将成为RPM包能否制作成功的关键。

SPEC文件主要分为如下几个部分.

  • introduction section

介绍阶段: 软件的基本信息,主要包含rpm -qpi命令所显示的信息

  • Name: 软件 名称
  • Version:版本号, 2.1, 2.4等,不可以用_或者-
  • Release: 发行号,第几次制作RPM包,和版本不同
  • License: 版权信息
  • Group: 软件包数据什么组,必须在/usr/share/doc/rpm-4.11.3/GROUPS 中的组
  • URL: 从哪儿可以获取到该RPM包
  • Packager: 制作者和制作者的邮箱
  • Vendor: 软件提供商
  • Source: 制作rpm包使用的源文件.
  • BuildRoot: 以该目录为根,进行软件的安装工作.
  • BuildRequires: 定义依赖关系. 制作rpm过程所依赖的软件包.requires表示安装过程所依赖的软件包
  • Summary:一行内容简单介绍
  • Description:软件的详细信息描述
  • prep section

将源码包解压到BUILD下的相关过程;

  • build section

configure和make的相关过程;

  • install section

安装过程 make install DESTDIR="%{bildroot}"

  • 脚本段

定义安装和卸载前后执行的脚本,如创建、删除用户等;

  • %pre:安装前执行脚本;
  • %post:安装后执行脚本;
  • %preun:卸载前执行脚本;
  • %postun: 卸载后执行脚本;
  • clean section
  • 删除此前制作过程中buildroot目录下的文件内容;
  • files section

从BUILDROOT中把相关的文件归档合起来,用于最终生成RPM包。 files中列出的文件必须和BUILDROOT中安装的文件一一对应,file中列出来的,在BUILDROOT中必须有,BUILDROOT中安装的,在files中也必须被列出来,否则在制作的时候会失败;

  • change log

主要定义RPM包的修改日志,定义了X时间,X版本号,X进行修改;

制作RPM包

  • 设定好目录结构

RPM的打包环境,需要用普通用户、在家目录下创建rpmbuild,并在其下创建BUILD、RPMS、SOURCES、SPECS、SRPMS等目录结构,用于制作RPM包,每个目录都有特定的作用;

  • BUILD:源代码解压后,会将解压后的文件放入该目录,需要是空目录;
  • BUILDROOT:制作RPM包过程中,将该目录作为虚拟的根目录,用来进行软件包的安装工作。
  • RPMS:制作完成之后的RPM包放入该子目录中.
  • SOURCES:所有搜集的源材料位置,包括源码包,配置文件,补丁文件,说明文档等所有需要打包到RPM包的素材全都放入该目录;
  • SPECS:每一个RPM包的制作都必须有一个SPEC文件,作为制作RPM包的纲领性文件,以软件包的名字命名,以.spec结尾,如: nginx.spec
  • SRPMS: src.rpm格式的RPM包存放位置,RPM的源文件。
  • 将源码文件放到对应目录下
  • 将tar.gz的源码包,和相关要打包的补丁、配置文件等放到SOURCES目录下,所有SOURCES目录下的文件都要在SPEC中被使用,否则制作RPM包的时候会报错。
  • 创建SPEC文件
  • 通过源码 文件和SPEC文件生成RPM包

通过rpmbuild进行制作RPM包,可以通过参数控制,执行到特定的阶段后停止执行;

  • rpmbuild -bp 只执行到prep阶段
  • rpmbuild -bi 执行到install阶段
  • rpmbuild -bc 执行到build阶段
  • rpmbuild -bb 制作二进制格式的RPM包
  • rpmbuild -bs 制作源码格式的RPM包
  • rpmbuild -ba 同时制作二进制和源码包
  • rpmbuild -bl 检测有哪些文件在buildroot存在,但是却在制作的file段没包含

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值