活用Linux系统的RPM

整机外设

  一、认识Linux的RPM

  RPM(Red Hat Package Manager)使套件的新增、移除、升级、验证更简便,但是同时也有不少问题。为了解决这些问题,RedHat针对自己的系统提出了一个较好的办法来管理成百上千的软件。这就是RPM管理系统支持的source rpm安装方式。

  那么如何使用source rpm方式安装?这是很多Linux初学者还搞不清楚的问题。其实 source rpm就是原本可以直接安装使用的rpm文件的原始程序代码,那为何还要如此麻烦地使用source rpm呢?通常原因有两种:rpm 文件的预设功能不足或想做最佳化,要重新编译源代码;希望自己可以使用安全的源代码。目前,在RH8之后的版本,将原本编译源代码的功能从“rpm”命令独立出来成为新的命令“rpmbuild”,以下就来为大家讲讲如何安装*.src.rpm。

  二、安装步骤介绍

  1.要进行安装,首先就要检查你的Linux操作系统中是否安装有“rpmbuild”命令。进入Linux系统后你直接输入“rpm -q rpm-build”即可(图1)。

  2.检查 source rpm 所需的目录“/usr/src”下是否有以下的目录:

  /usr/src/redhat

  /usr/src/redhat/BUILD

  /usr/src/redhat/RPMS

  /usr/src/redhat/RPMS/athlon

  /usr/src/redhat/RPMS/i386

  /usr/src/redhat/RPMS/i486

  /usr/src/redhat/RPMS/i586

  /usr/src/redhat/RPMS/i686

  /usr/src/redhat/RPMS/noarch

  /usr/src/redhat/SOURCES

  /usr/src/redhat/SPECS

  /usr/src/redhat/SRPMS

  以上目录预设是空的。其中四个主目录用途分别是:

  /usr/src/redhat/SPECS──这个目录当中放置的是该套件的设置文件,例如这个套件的信息参数、设置项目等都放在这个目录里。

  /usr/src/redhat/SOURCES──这个目录当中放置的是该套件的原始文件(*.tar.gz的文件)以及config这个设置文件。

  /usr/src/redhat/BUILD──在编译的过程中,有些暂存的资料都会放在这个目录当中。

  /usr/src/redhat/RPMS──经过顺利的编译后,将打包完成的文件放在这个目录当中。里面包含了i386、i586、i686、noarch……的子目录(图2)。

  在编译的过程当中,可能会发生不明原因的错误或是设置的错误,这个时候就会在/tmp目录下产生一个相对应的错误文件,你可以根据该错误文件进行除错的工作。若编译成功,那么刚刚解压缩之后的文件,在“/usr/src/redhat/SPECS、SOURCES、BUILD等等目录中的文件都会被删除,而只剩下放置在“/usr/src/redhat/RPMS”目录下的文件了!

  3.安装source rpm(vsftpd-1.1.3-8.src.rpm)

  # rpm -ivh vsftpd-1.1.3-8.src.rpm

  4.安装结果:

  # ls /usr/src/redhat/*

  /usr/src/redhat/BUILD:

  /usr/src/redhat/RPMS:

  athlon i386 i486 i586 i686 noarch

  /usr/src/redhat/SOURCES:

  vsftpd-1.0.1-missingok.patch vsftpd-1.1.3-tcp_wrappers.patch vsftpd.pam

  vsftpd-1.1.3-rh.patch vsftpd.ftpusers vsftpd.user_list

  vsftpd-1.1.3.tar.gz vsftpd.init vsftpd.xinetd

  /usr/src/redhat/SPECS:

  vsftpd.spec

  /usr/src/redhat/SRPMS:

  5.接下来可以修改config配置文件

  #vi /usr/src/redhat/SPECS/vsftpd.spec

  6.编译成 RPM 文件。看到编译好的 RPM(vsftpd-1.1.3-8.i386.rpm)

  #cd /usr/src/redhat/SPEC

  #rpmbuild -bb vsftpd.spec

  # ls RPMS/i386/

  vsftpd-1.1.3-8.i386.rpm vsftpd-debuginfo-1.1.3-8.i386.rpm

  7.安装编译好的RPM文件

  #rpm -ivh /usr/src/redhat/RPMS/i386/vsftpd-1.1.3-8.i386.rpm

  这样就完成了。若你只是想直接使用“*.src.rpm”而没修改config需求,则可以有更简单的方式,就是直接执行:“rpmbuild --rebuild vsftpd-1.1.3-8.src.rpm”。

  三、RPM不足的表现

  其实,RPM有许多可选参数,很容易从名称中联想到相应的用途。大多数参数都有两种名称(flavor):长名和短名。长名是两个连字符(hyphen),后跟参数的全名;短名只有一个连字符,后带一个字符(一般是全名的首字母)。当然,应用时只需一种格式就够了,比如:rpm --install package或rpm -i package。为了有效地工作,RPM 需要记录系统都安装了哪些软件。这个资料库在“/var/lib/rpm”中。通过这个资料库,你可以了解许多已安装的软件的信息。实际上,RPM 的不足也表现在无法自动解决依赖问题,不能自己去抓取、安装;没有交互式的配置;软件包通常都包含配置文件和安装后可运行的脚本,但这种配置只能在安装后单独进行;难以预防包中的错误、缺乏兼容性保证。通常,打包者会启用尽量多的参数,但这导致包变得更大,含的文件数也更多,有时也会影响速度。