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,如下图所示。

Linux创建RPM包思路 - zhuzhu - 五事九思 (大连Linux主机维护)
 



下面按照创建RPM包的步骤,边讲解边对各个目录的作用进行叙述。假设,我们要创建的rpm包为:test-1.0.1-1.el6.i686.rpm,打包的压缩文件为:test-1.0.1.tar.gz。
vim .rpmmacros键入如下内容:%_topdir /rpm/rpmbuild,这是为了制定rpm构建的目录位置。
把test-1.0.1.tar.gz拷贝到SOURCE目录底下。
转至SPECS目录底下,编写test.spec描述文件,这个文件是创建rpm包最重要的部分,它会制定rpm包里的软件的安装目录,以及安装软件前后要注意的问题,软件的依赖及系统要求,后面会详细介绍。
编译RPM,执行命令:rpmbuild –ba test.spec。这样以后,就开始创建rpm包如果成功的话,继续往下看。
执行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文件。如下图:


Linux创建RPM包思路 - zhuzhu - 五事九思 (大连Linux主机维护)
 


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

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

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


rpm打包利器rpm_create简介:https://code.google.com/p/rpmcreate/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值