| rpm包管理和安装盘定制 本文是构造Linux的图形化安装程序系列文章的第四部分,内容主要包括RPM基本命令介 绍,RPM包的定制过程,RPM SPEC文件的主要内容,RPM函数库简单参考和安装程序中关于RPM包管理部分源码的简单介绍。通过这部分的介绍,希望读者能对Linux系统下RPM 包的定制过程和RPM包的系统安装过程有一个基本的了解。 在安装程序进行了磁盘分区工作之后,安装程序就可以进行RPM系统包的安装了。这是 整个安装过程中很重要的一步。在这一环节,安装程序要读出所有rpm包的描述信息并根据包之间的依赖关系,构造出正确的包安装顺序。这种构造的机制主要是 对包依赖关系的树形结构进行深度搜索,对于最基本的系统包(比如Glibc和Bash)一定要最先安装。为了保证在安装了所有的系统包之后,RPM数据库 运行良好,还要在安装过程中构造正确的RPM数据库。最后为了调试的方便,也便于用户检查安装的系统包,还需要对包的安装过程建立日志。 1 RPM包的基本概念 RPM(Redhat Package Management)是由RedHat开发的,Linux系统下的系统包管理工具。它的目标是:使包的安装和卸载过程更容易,能够证实一个包是否已经正 确安装了,简化包的建立过程,可以从源代码建立整个包,使它能用于不同的体系结构。RPM系统已经成为现在Linux系统下包管理工具事实上的标准,并且 它也移植到很多商业的unix系统之下。 RPM包由包标签标识,它包含这样几个部分,软件名,软件版本,包的发行版本。在包的内 部还包含如下信息:包的建立时间,包的内容描述,安装包的所有文件的大小,数字签名以证实包的完整性。RMP包还包含包内的文件信息,其中包括:每个文件 的文件名,每个文件的权限,文件的属组和拥有者,每个文件的md5校验和,文件的内容。 RPM的包管理系统提供了下列功能:安装新的包,除去旧的包,将一个旧包升级为新的包,获得已经安装包的信息。 常用的RPM命令: rpm -i 使用此命令可以安装一个rpm包。在安装的过程中,此命令依次要进行包依赖性检测,包冲突检测,完成安装前必须执行的任务,处理相应的配置文件,解开包中的文件并将其拷贝到正确的位置,完成安装后必须执行的任务,对包进行的处理进行跟踪记录。 例如: rpm -i bzip2-1.0.1-3.i586.rpm //安装bzip2包。 rpm -ivh bzip2-1.0.1-3.i586.rpm //安装bzip2包的同时,显示更多的文本提示信息,以及在屏幕上显示连续的#号来表示的安装进度。 有时在安装一个新包时,根据依赖性检查的结果,需要首先安装其他的包。但可能这时系统中并没有安装所需要包的合适版本,这样rpm会终止包的安装。为了直接安装这个包,您需要加入--nodeps选项。下例表示在安装bzip2包时,不进行依赖性检测。 rpm -ivh bzip2-1.0.1-3.i586.rpm --nodeps rpm -ivh bzip2-1.0.1-3.i586.rpm --force //强制安装rpm包。这条命令实际上等价于 rpm -ivh bzip2-1.0.1-3.i586.rpm --replacepkgs --replacefiles rpm -e 使用此命令可以删除一个rpm包。删除rpm包时,此命令要完成如下工作: 检查rpm数据库确保没有其他包依赖将要删除的包。 如果包存在卸载前脚本,执行此脚本。 检测安装包时是否对包配置文件进行了修改。如果进行了修改,则保存备份。 查找rpm数据库中此RPM包所包含的文件。如果这些文件不属于任何其它的包,则删除它。 如果包存在卸载后脚本,执行此脚本。 从rpm数据库除去所有包跟踪记录。 例如: rpm -e bzip2 //从系统中除去bzip2包。添加--nodeps选项可以在删除包时,禁止包的依赖性检查。 rpm -U 这条命令完成rpm包的升级。它执行的操作包括安装合意的包,删除所有存在的老版本的包。例如: rpm -U bzip2 //升级包bzip2。 rpm -q 这条命令可以获得rpm包的信息。通过这条命令可以查询包的文件列表,包的版本,包的描述性信息。同样的,你也可以通过这条命令查得一个文件属于哪个rpm包。例如: rpm -qf `which fdisk` //检查fdisk文件属于哪个系统包。 rpm -qi bzip2 //获得已安装包bzip2的描述性信息。(责任编辑:admin) |