前言
在前一章我们提到以原始码的方式来安装套件,也就是利用厂商释出的 Tarball 来进行套件与程式的安装。不过,您应该很容易发现,那就是每次安装套件都需要设定作业系统、 设定编译参数、实际的编译、最后还要依据个人喜好的方式来安装套件到定位。 这过程是真的很麻烦的,而且对于不熟整个系统的朋友来说,还真是累人啊!
那有没有想过,如果我的 Linux 系统与厂商的系统一模一样,那么在厂商的系统上面编译出来的执行档, 自然也就可以在我的系统上面跑啰!也就是说,厂商先在他们的系统上面编译好了我们使用者所需要的套件, 然后将这个编译好的可执行的套件直接释出给使用者来安装,如此一来,由于我们本来就使用厂商的 Linux distribution ,所以当然系统是一样的,那么使用厂商提供的编译过的可执行档就没有问题啦! 说的比较白话一些,那就是利用类似 Windows 的安装方式,由程式开发者直接在已知的系统上面编译好,再将该程式直接给使用者来安装,如此而已。
那么如果在安装的时候还可以加上一些与这些程式相关的资讯,将他建立成为资料库, 那不就可以进行安装、反安装、升级与验证等等的相关功能啰( 类似 Windows 底下的‘新增移除程式’ )?!确实如此,在 Linux 上面至少就有两种常见的这方面的套件管理员,分别是 RPM 与 Debian 的 dpkg ,其中又以 RPM 更常见。所以底下我们就来介绍一下 RPM 这个咚咚啰!
什么是 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 的用处了!
阅读(1699) | 评论(0) | 转发(0) |