rpm包的制作简单化

应生产环境中rpm编译需求,现记录下rpm包编译制作过程:
一、SRPM(Source rpm)包的制作rpm包的过程:
即没有编译过的原始文件,一般对应软件的官网上都有下载。
1.下载*.src.rpm包并安装,默认/usr/src/redhat/SPECS目录下会生成对应的.spec文件.
说明下/usr/src/redhat/...目录结构:
BUILD编译过程中有一些暂存资料都会放在这个目录中
RPMS编译成功之后,将打包的文件放在这个目录中,下有i386,i586,i686,noarch等目录....
SOURCES放置软件的原始文件如tar.gz包或配置文件
SPECS.spec编译文件
SRPMS类似RPMS,如果需生成src.rpm形式,会打包到此目录
2.编译.spec文件
3.运行rpmbuild  -ba   rpm-name.spec
执行完后产生的二进制RPM包会生成在RPMS目录的系统架构目录下.
注:32位的系统只能生成在i386下的32位包。无法生成64位软件包,这个经由同事实践。  
生成的包一样可以进行安装/卸载,如安装相同的包,可加上--force(强制替换)选项.
升级:rpm -Uvh  --force  rpm-name.rpm

二、tar.gz源码包制作rpm包的过程:
1.下载解压rpm-name.tar.gz对应软件包
2. 找到.spec文件编辑(有些软件不一定有spec文件,只能网上找对应spec模板或自己编写)
3.将源码包复制到/usr/src/redhat/SOURCES/...   原因看前面目录结构说明。
4.运行rpmbuild  -ba  rpm-name.spec
生成rpm文件/usr/src/redhat/RPMS/.../rpm-name.rpm

三、.spec文件的框架结构:主要是虚拟路径的位置和宏定义。
1.全局配置  包含软件基础信息。
2.%prep 预处理部分:
由一些参数组成一个shell脚本从SOURCE中解压源码和应用补丁到BULID目录准备编译。
3.%bulid 编译和准备软件包部分:
运行在上下目录中指定的源码目录,编译过程中调用脚本 .config在本地的目录(%configure中配置的可以通过运行rpm -eval %configure来查看它的配置)
4.%install部分(使用绝对路径)
用来做rpm安装所需的文件,这些打包的文件会复制到前面讲的BuildRoot目录树中,通常/var/tmp/...目录.
5.%clean 部分 
清理rpmbulid后的一些临时文件。
其中的%pre,%post 脚本运行在包安装前后的交互。
如安装前设置:
  • %pre  
  • if [ $1 == 1 ]; then  
  •     %{_sbindir}/useradd -c "Nginx user" -s /bin/false -r -d %{nginx_home} %{nginx_user} 2>/dev/null || :  
  • fi  
  • 安装前创建nginx用户并设置家目录.
%preun,%postun 脚本运行在包卸载前后的交互。
如卸载前设置:
  • %preun  
  • if [ $1 = 0 ]; then  
  •     /sbin/service %{name} stop >/dev/null 2>&1  
  •     /sbin/chkconfig --del %{name}  
  • fi  
  • 停止服务
6.%files部分 (使用相对路径)
任何打包的文件都需要在这个包的详细文件列表中,定义哪些文件/目录放入到rpm包中。注意虚拟目录进行,不可写绝对路径,以免系统文件的更改,应用宏或变量来表示相对路径。
7.%changlog部分
记录包修改记录。

rpm包内容的组成其实就是:tar.gz源码包,补丁包,.spec脚本文件.   最主要的是知道如何进行.spec文件的编译修改,如软件本身无.spec格式,可参考网上模板进行更改....
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值