`
JackyCheng2007
  • 浏览: 253877 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

RPM 与 SRPM

阅读更多
引用

什么是 RPM 与 SRPM
RPM 全名是『 RedHat Package Manager 』简称则为 RPM 啦!顾名思义,当初这个套件管理的程序是由 Red Hat 这家公司发展出来的, 但其实在很多的其它套件也有相类似的套件管理程序。不过由于 RPM 使用上很方便,所以就成了目前最热门的套件管理程序啦!

那么什么是 RPM 呢?说的简单一点, RPM 是以一种数据库记录的方式来将你所需要的套件安装到你的 Linux 主机的一套管理程序。他最大的特点就是将您要安装的套件先编译过( 如果需要的话 )并且打包好了,透过包装好的套件里头预设的数据库记录, 记录这个套件要安装的时候必须要的相依属性模块( 就是你的 Linux 主机需要先存在的几个必须的套件 ),当安装在你的 Linux 主机时, RPM 会先依照套件里头的纪录数据查询 Linux 主机的相依属性套件是否满足, 若满足则予以安装,若不满足则不予安装。那么安装的时候就将该套件的信息整个写入 RPM 的数据库中,以便未来的查询、验证与反安装!这样一来的优点是:
1. 由于已经编译完成并且打包完毕,所以安装上很方便( 不需要再重新编译 );
2. 由于套件的信息都已经记录在 Linux 主机的数据库上,很方便查询、升级与反安装;
但是这也造成很大的困扰,由于 RPM 程序是已经包装好的数据,也就是说, 里面的数据已经都『编译完成』了!所以, 安装的时候一定需要当初安装时的主机环境才能安装 ,也就是说,当初建立这个套件的安装环境必须也要在你的主机上面出现才行!例如 rp-pppoe 这个 ADSL 拨接套件,他必须要在 ppp 这个套件存在的环境下才能进行安装!如果你的主机并没有 ppp 这个套件,那么很抱歉,除非您先安装 ppp 否则 rp-pppoe 就是不让你安装的( 当然您可以强制安装,但是通常都会有点问题发生就是了! )。

所以,通常不同的 distribution 所释出的 RPM 档案,并不能用在其它的 distributions 里面,举例来说, Fedora 释出的 RPM 档案,通常无法直接在 Mandriva 上面进行安装的,更有甚者, 不同版本之间也无法互通,例如 Fedora Core 4 的 RPM 档案就无法直接套用在 FC3 上面!因此,这样可以发现他的缺点是:
1. 安装的环境必须与打包时的环境需求一致或相当;
2. 需要满足套件的相依属性需求;
3. 反安装时需要特别小心,最底层的套件不可先移除,否则可能造成整个系统的问题!
那怎么办?呵呵!还好,还有 SRPM 这个东西! SRPM 是什么呢?顾名思义,他是 Source RPM 的意思,也就是这个 RPM 档案里面含有原始码( Source Code )哩!特别注意的是,这个 SRPM 所提供的套件内容『并没有经过编译』, 他提供的是原始码喔!

通常 SRPM 的扩展名是以 ***.src.rpm 这种格式来命名的 。不过,既然 SRPM 提供的是原始码,那么为什么我们不使用 Tarball 直接来安装就好了?!这是因为 SRPM 虽然内容是原始码, 但是他仍然含有该套件所需要的相依性套件说明、以及所有 RPM 档案所提供的数据,同时,他与 RPM 不同的是,他也提供了参数设定档( 就是 configure 与 makefile 啦! )。所以,如果我们下载的是 SRPM ,那么要安装该套件时,RPM 套件管理员将会(1)先将该套件以 RPM 管理的方式编译,(2)然后将编译完成的 RPM 档案安装到 Linux 系统当中。与 RPM 档案相比, SRPM 多了一个重新编译的动作, 而且 SRPM 编译完成会产生 RPM 档案。

怪了,怎么 SRPM 这么麻烦吶!还要重新编译一次,那么我们直接使用 RPM 来安装不就好了!?通常一个套件在释出的时候,都会同时释出该套件的 RPM 与 SRPM 。我们现在知道 RPM 档案必须要在相同的 Linux 环境下才能够安装,而 SRPM 既然是原始码的格式,自然我们就可以透过修改 SRPM 内的参数设定档,然后重新编译产生能适合我们 Linux 环境的 RPM 档案,如此一来,不就可以将该套件安装到我们的系统当中,而不必与原作者打包的 Linux 环境相同了?这就是 SRPM 的用处了!


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics