异形技术 Abnormity Network Tech

RPM 与 Tarball 套件管理员
  
  为何需要升级套件
  这真是一个很有趣的课题,为何需要升级套件?如果我的机器运作的好好的,那么我干嘛需要升级?通常我们升级的原因主要有三个:
  ·需要新的功能,但旧有主机并没有,所以需要安装新的套件;
  ·旧版本的套件上面可能有安全上的顾虑,所以需要更新到新版的套件;
  ·旧版的套件执行效能不彰,或者执行的能力不能让管理者满足。
  在上面的需求当中,尤其需要注意的是第二点,当一个套件有安全上的顾虑时,千万不要怀疑,赶紧更新套件吧!否则造成网路危机,那可不是闹着玩的?那么更新的方法有哪些呢?其实,目前在 Linux 里面有相当多的不同的更新套件的方式,包括了 Red Hat 发展的 RPM 与 up2date 的线上更新模式; Debian 这个 distribution 里头使用的 dpkg 方法;Sun Unix 上面使用的 pkg 升级方式;目前越来越流行的 apt 线上更新模式;还有原始码里头最常使用的 Tarball 编译方法等等,如果要一个一个说明的话那也太累人了?所以,这里我们以目前在 Mandrake, Red Hat, OpenLinux 等 Linux distributions 内常见的 RPM 与 Tarball 的套件升级方式来进行说明:
  ·RPM
  目前使用最广泛的套件管理程式之一,利用资料库管理的方式来进行套件的安装,具有相当容易的操作介面,而且套件查询验证的功能相当强大,不过麻烦的地方在于他的属性相依的问题;
  ·Tarball
  直接以原始码( source code )经过编译后,进行安装。在安装上面具有较大的灵活度,可以随时更改使用者喜好的参数。但是需要其他的套件协助,例如 gcc compiler, kernel-header, make 套件等等,并且在反安装上面具有一定程度的困难度;
  这两种方法是各有优缺点啦,我们这里想要来谈一谈 RPM 与 Tarball 的安装方式了!
  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 档案,并不能用在其他的 distribution 里面,举例来说, Red Hat 释出的 RPM 档案,通常无法直接在 Mandrake 上面进行安装的,更有甚者,不同版本之间也无法互通,例如 Mandrake 9.0 的 RPM 档案就无法直接套用在 8.2 上面!因此,这样可以发现他的缺点是:
  3.安装的环境必须与打包时的环境需求一致或相当;
  4.需要满足套件的相依属性需求;
  5.反安装时需要特别小心,最底层的套件不可先移除,否则可能造成整个系统的问题!
  那怎么办?呵呵!还好,还有 SRPM 这个东西! SRPM 是什么呢?他也是一种 RPM 啦!但是由于里面连同当初编译之前的原始码都在里头,所以可以进行重新编译的动作。通常 SRPM 的附档名是 ****.src.rpm 这一种档案格式。由于 SRPM 包含了原始码及参数设定档案,所以在安装之前则必须重新的编译建立起包装的资讯档案套件才行!当然啰,如果在编译的过程中发生了问题,也可以藉由里头的原始码更动来修正问题的所在呢!所以说, RPM 与 SRPM 最大的差异就是在于有没有包含原始码的程式啦!
  ·什么是 i386, i586, i686, noarch
  好啦!现在我们已经知道 RPM 与 SRPM 的格式了,分别为:
  xxxxxxxxx.rpm  <==RPM 的格式,已经包装完成的 rpm 档案; xxxxx.src.rpm  <==SRPM的格式,包含为编译的原始码资讯。
  ·  
  OK!那么 rpm 档案有没有什么版本或者是套件名称的称呼呢?有的,你可以这样来看待一个 rpm 的档案,例如 rp-pppoe-2.6-5.i386.rpm
  rp-pppoe - 2.6 - 5 . i386 .rpm 第一个部分是套件名称这是套件的版本资讯 这是释出版本的次数 这是适合的硬体平台 附档名而已
  这样子可以很清楚的发现该套件的名称、版本资讯、打包次数与操作的硬体平台!好了,来谈一谈每个不同的地方吧:
  o套件名称:当然就是每一个套件的名称了!
  o版本资讯:每一次更新版本就需要有一个版本的资讯,否则如何知道这一版是新是旧?这里通常又分为主版本跟次版本,反正版本很多啦!
  o释出版本次数:也就是编译的次数啦!那么为何需要重复的编译呢?这是由于同一版的套件中,可能由于有某些 bug 或者是安全上的顾虑,所以必须要重新设定当初打包时候的设定参数,设定完成之后重新编译并打包成 RPM 档案!因此就有不同的打包数出现了!
  o操作硬体平台:这是个很好玩的地方,由于 RPM 可以适用在不同的操作平台上,但是由于不同的平台设定的参数还是有所差异性!所以就有所谓的 i386, i586, i686 与 noarch 等的档案名称出现了!
  §i386:几乎适用于所有的 x86 平台,不论是旧的 pentum 或者是新的 pentum-IV 与 K7 系列的 CPU等等,都可以正常的工作!那个 i 指的是 Intel 相容的 CPU 的意思,至于 386 不用说,就是 CPU 的等级啦!
  §i586:就是 586 等级的电脑,那是哪些呢?包括 pentum 第一代 MMX CPU, AMD 的 K5, K6 系列 CPU ( socket 7 插脚 ) 等等的 CPU 都算是这个等级;
  §i686:在 pentun II 以后的 Intel 系列 CPU ,及 K7 以后等级的 CPU 都属于这个 686 等级!
  §noarch:就是没有任何硬体等级上的限制。
  需要额外说明的是, i386 的档案可以在任何的机器上面安装,不论是 586 或者是 686 的机器,但是 i386 则不一定可以使用于 586 或者是 686 的硬体上面,另外,在 686 的机器上使用 i686 的档案会比使用 i386 的档案在执行上,效能可能比较好一些!无论如何,使用 i386 应该就是比较没有问题的啦!另外,由于不同的 distirbution 会有不同的环境与函式库,所以在 i386 之后也有可能会额外再加上该套件的简写!
  好了!接下来我们来谈一谈安装的时候所需要使用到的目录!
  ·SRPM 与 RPM 工作时候所需要的安装目录
  SRPM 的编译过程:
  刚刚提到 SRPM 里头含有的是未经编译的原始码,所以我们需要将 SRPM 进行编译打包的动作!那么编译是在哪里进行呢?由于编译的时候会将原始码解压缩出来,并且将附有的参数控制选项也同时的解开,所以就有一些资料会出现了,那么这些资料放在哪里呢?你可以到你的 /usr/src 这个目录里面去查看一下,通常每个 distribution 提供的目录都不太相同,以 Mandrake 9.0 为例,他是以 /usr/src/RPM 为工作目录, Red Hat 是以 /usr/src/redhat 为工作目录, Openlinux 则是以 /usr/src/openlinux 为工作目录!无论如何,反正就是在 /usr/src 这个目录下就对了!好了,既然我们是在 Mandrake 9.0 ,所以就到 /usr/src/RPM 里头去看一看呦:
  o/usr/src/RPM/SPEC:这个目录当中放置的是该套件的设定档,例如这个套件的资讯参数、设定项目等等都放置在这里;
  o/usr/src/RPM/SOURCE:这个目录当中放置的是该套件的原始档(*.tar.gz的档案)以及 config 这个设定档;
  o/usr/src/RPM/BUILD:在编译的过程中,有些暂存的资料都会放置在这个目录当中;
  o/usr/src/RPM/RPMS:经过编译之后,并且顺利的编译成功之后,将打包完成的档案放置在这个目录当中。里头有包含了 i386, i586, i686, noarch.... 等等的次目录。
  此外,在编译的过程当中,可能会发生不明的错误,或者是设定的错误,这个时候就会在 /tmp 底下产生一个相对应的错误档,您可以根据该错误档进行除错的工作呢!等到所有的问题都解决之后,也编译成功了,那么刚刚解压缩之后的档案,就是在 /usr/src/RPM/SPEC, SOURCE, BUILD 等等的档案都会被杀掉,而只剩下放置在 /usr/src/RPM/RPMS 底下的档案了!
  RPM 的安装过程:
  RPM 在安装的时候,会先去读取 套件 内的设定参数内容,就是刚刚我们在 /usr/src/RPM/SPEC 的相关资讯啦!然后将该资料用来比对 Linux 系统的环境,这些环境包括了这个欲安装的套件的前驱套件,例如目前 postfix 这个 e-mail 套件当中,大都支援了cyrus-sasl 这个套件的身份认证功能,所以,要安装 postfix 就必需先安装 cyrus-sasl 这个套件,否则 postfix 就不让你安装了!还有类似版本的资讯等等,这些都是 RPM

好评   好评率(69.76%)   差评
Posted on 2009/1/30 1:48:00 by 异形技术 浏览15642次