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。
- 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文件。如下图:
网上有很多关于SPEC文件语法的描述,但都不全,下一篇文章,我主要把SPEC文件比较全一点的不太难理解的语法罗列下,敬请期待。
推荐中文的rpm包讲解得比较全的文章(IBM工程师写的,有好几部分),有兴趣的博友可以看看:http://www.ibm.com/developerworks/cn/linux/management/package/rpm/part1/
【备注】:尊重原创者的劳动成果,分享和转载请注明出处。谢谢。2012.12.12 草原战狼