鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 操作系统维护 > >

一步步制作RPM包

来源:互联网 作者:佚名 时间:2013-08-22 11:41
本文根据马哥教育视频http://mageedu.blog.51cto.com/4265610/919986总结而来,如果想仔细学习请看该视频。一.RPM制作步骤我们在企业中有的软件基本都是编译的,

一.RPM制作步骤

我们在企业中有的软件基本都是编译的,服务器空间,我们每次安装都得编译,那怎么办呢?那就根据我们的需求制作RPM安装包吧。先来说说基本布骤:

1.Planning what you want             计划做什么rpm包。软件的?库的?

2.Gathering the software to package  收集原材料,即收集源码包

3.Patch the software as need         如果需要打补丁,收集补丁文件。此布骤不是必须

4.Outling any dependenies     确定依赖关系包

------------------  上述动作可由我们手动编译一次软件来确定  -------------------

5.Building RPMs                      开始动手制作RPM包

5.1 Set up the directory stucture 设定好目录结构,我们在这些目录中制作我们的RPM包,我们需要下列目录

BUILD源代码解压后的存放目录

RPMS    制作完成后的RPM包存放目录,里面有与平台相关的子目录

SOURCES 收集的源材料,香港服务器,补丁的存放位置

SPECS   SPEC文件存放目录

SRMPS   存放SRMPS生成的目录

5.2 Place the Sources in the right directory   把源材料放到正确的位置

5.3 Create a spec file that tell rpmbuild command what to do 创建spec文件,这是纲领文件,rpmbuild命令根据spec文件来制作合适的rpm包

5.4 Build the source and binary RPMS 制作src或二进制rpm包

6.Test RPMS 测试制作的PRM包

7.Add signature for RPM  为RPM包签名

二.RPM包制作实例

我还是用连贯的话为大家叙述一遍吧,我们首先确实我们要为什么做rpm包,通常我们是为一些软件,比如httpd,nginx等,然后去收集这些软件包的源代码,如果有需要的话也收集这些补丁文件,手动编译安装一下这个软件(当然如果是不需要编译的就不用演练了),确定依赖的软件包,并记录下来,下面开始准备制作tengine的PRM包吧:

1.建立一个普通用户,有普通用户来制作rpm,虚拟主机,用root的可能会因为代码问题导致毁灭的后果

  • useradd ibuler 
  • su - ibuler 
  • 2.确定我们在哪个目录下制作RPM,通常这个目录我们topdir,这个需要在宏配置文件中指定,这个配置文件称为macrofiles,它们通常为 /usr/lib/rpm/macros:/usr/lib/rpm/macros.*:~/.rpmmacros,这个在rhel 5.8中可以通过rpmbuild --showrc | grep macrofiles  查看,6.3的我使用这个找不到,但使用是一样的。你可以通过rpmbuild --showrc | grep topdir 查看你系统默认的工作车间 

    我们还是自定义工作目录(或车间)吧

    3.在topdir下建立需要的目录

  • cd ~/rpmbuild  
  • mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} 
  • 4.把收集的源码放到SOURCES下

  • cp /tmp/tengine-1.4.2.tar.gz SOURCES  ##事先放好的
  • 5.在SPECS下建立重要的spec文件

  • cd SPECS 
  • vi tengine.spec          ##内容见后讲解,rhel6.3会自动生成模板 
  • 6.用rpmbuild命令制作rpm包,rpmbuild命令会根据spec文件来生成rpm包 

    我们可以一步步试,先rpmbuild -bp ,再-bc 再-bi 如果没问题,rpmbuild -ba 生成src包与二进制包吧

    7.安装测试有没有问题,能否正常安装运行,能否正常升级,卸载有没有问题

    root用户测试安装:

    8.如果没问题为rpm包签名吧,防止有人恶意更改    ##这个先不写了,有点晚了,以后补上

    到此整个流程完毕。下面来说说其中最最重要的spec的格式,先说最简单的,最容易实现的

    三.RPM包制作拓展

    下面我们来拓展一下,比如:我们想为tengine增加控制脚本,可以通过start|stop控制,我们还想更换一下默认的首页index.html,默认的fastcgi_params是不能直接连接php的,所以我们替换为新的配置文件,我们也可以用设置好的nginx.conf替换原来的nginx.conf。基于上述步骤下面继续

    1.把修改后的首页文件index.html,控制脚本init.nginx,fastCGI配置文件fastcgi_params,Nginx配置文件nginx.conf 放到SOURCES中 。 

  • [ibuler@ng1 rpmbuild]$ ls SOURCES/ 
  • fastcgi_params  index.html  init.nginx  nginx.conf  tengine-1.4.2.tar.gz 
  • 2 编辑tengine.spec,修改

    2.1 介绍区域的SOURCE0下增加如下

    2.2 安装区域增加如下

    2.3 脚本区域增加如下

    2.4 %file区域增加如下

    3. 生成rpm文件测试

  • rpmbuild -ba tengine.spec 
  • 4. 安装测试 

    到此RPM包制作完毕,你可以根据你的需求制作RPM包吧。

    四.RPM包签名

    1.生成GPG签名密钥,我用的是root用户

    有时可能因为随机数不够导致卡在那里,这时候你就yum 安装几个包组,马上就够了。

    2.查看成生的密钥

    3.导出公钥以供大家使用验证

  • 网友评论
    <