活用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 的不足也表现在无法自动解决依赖问题,不能自己去抓取、安装;没有交互式的配置;软件包通常都包含配置文件和安装后可运行的脚本,但这种配置只能在安装后单独进行;难以预防包中的错误、缺乏兼容性保证。通常,打包者会启用尽量多的参数,但这导致包变得更大,含的文件数也更多,有时也会影响速度。

