• 【原创】Linux创建RPM包思路


    A:RPM是什么?

    RPM(Red Hat Package Manager)是用于 Linux 分发版(distribution)的最常见的软件包管理器。

    RPM包命名方式:name-version-release.architecture.rpm

    如:hadoop-1.0.3-1.el6.x86_64.rpm,hadoop-1.0.3-2.el6.noarch.rpm

     

    B:RPM能做什么?

      RPM有五种基本的操作功能:安装、卸载、升级、查询和验证。这五种基本功能的实现仅仅需要用rpm + 选项 + rpm包就能轻易地实现。这五个功能常用的方式如下(以mysql为例):

    安装:

             rpm –ivh mysql-5.1.61-4.el6.i686.rpm

    查询:

             rpm –qa mysql:查询跟mysql有关的包。

    删除:

             rpm –e mysql-5.1.61-4.el6.i686,一般的话都会先通过查询已经安装好的包,然后执行删除命令,上述命令,即可卸载掉系统安装好的rpm包。

    升级:

             rpm –Uvh mysql-5.1.61-4.el6.i686.rpm

    验证:

             rpm –V mysql-5.1.61-4.el6.i686.rpm。对已经安装了的程序进行验证。

    C:怎么创建RPM包?

             首先要定义一个构建rpm包的目录,如mkdir –p /root/rpmbuild,但是,仅仅这样是不能指定rpmbuild即rpm包的目录,因为系统有默认的rpm构建的目录,这时需要在rpmbuild目录底下建一个.rpmmacros文件,用来指定rpm构建的目录位置,然后再在rpmbuild底下创建以下四个目录:BUILD,RPMS,SOURCES,SPECS,如下图所示。

     

    下面按照创建RPM包的步骤,边讲解边对各个目录的作用进行叙述。假设,我们要创建的rpm包为:test-1.0.1-1.el6.i686.rpm,打包的压缩文件为:test-1.0.1.tar.gz。

    1. vim .rpmmacros键入如下内容:%_topdir /rpm/rpmbuild,这是为了制定rpm构建的目录位置。
    2. 把test-1.0.1.tar.gz拷贝到SOURCE目录底下。
    3. 转至SPECS目录底下,编写test.spec描述文件,这个文件是创建rpm包最重要的部分,它会制定rpm包里的软件的安装目录,以及安装软件前后要注意的问题,软件的依赖及系统要求,后面会详细介绍。
    4. 编译RPM,执行命令:rpmbuild –ba test.spec。这样以后,就开始创建rpm包如果成功的话,继续往下看。
    5. 执行rpmbuild –ba test.spec,会首先把test-1.0.1.tar.gz解压缩到BUILD目录,系统会自动建立BUILDROOT这个目录(如上图所示),这个目录用来存放执行时存放的临时文件夹,这个目录也很重要,需要把在此目录建立相关目录以及拷贝相关文件信息的脚本写入test.spec文件里,以防编译出错,无法生成RPM包。成功执行完成之后,会在RPMS这个目录生成i686/ test-1.0.1-1.el6.i686.rpm文件。以下图片描述这个过程以及附了SPEC文件。如下图:

     

     网上有很多关于SPEC文件语法的描述,但都不全,下一篇文章,我主要把SPEC文件比较全一点的不太难理解的语法罗列下,敬请期待。

    推荐中文的rpm包讲解得比较全的文章(IBM工程师写的,有好几部分),有兴趣的博友可以看看:http://www.ibm.com/developerworks/cn/linux/management/package/rpm/part1/

    【备注】:尊重原创者的劳动成果,分享和转载请注明出处。谢谢。2012.12.12 草原战狼

    分享到:
  • 相关阅读:
    .NET内存管理、垃圾回收
    C#容器类,性能介绍
    与LINQ有关的语言特性
    IMEI
    IMSI
    无源码调试smali
    IDA远程调试 在内存中dump Dex文件
    error C4996: 'scanf': This function or variable may be unsafe.
    vue 用axios实现调用接口下载excel
    读《JavaScript权威指南》笔记(三)--对象
  • 原文地址:https://www.cnblogs.com/caoyuanzhanlang/p/2814162.html
Copyright © 2020-2023  润新知