在讲述YUM前,先来了解下RPM是什么?RPM是RedHat Package Manager的缩写。顾名思义,当初这个软件管理的程序是由Red Hat发展出来的,当然也有很多其它相类似的软件管理程序。不过由于RPM使用上很方便,所以就成为了目前最热门的软件管理程序。
RPM是以一种数据库记录的方式来将所需要的软件安装到Linux系统的一套管理程序。其最大的特点就是将要安装的软件先编译过(如果需要的话)并且打包好,通过包装好的软件里头预设的数据库记录,记录这个软件要安装的时候必须要的依赖的其它软件,当安装在Linux系统时,RPM会先根据软件里纪录的数据查询Linux系统中依赖的其它软件是否满足,如果满足则安装,如不满足则不安装。
RPM包安装程序最大的问题在于,由于RPM程序是已经打包好的数据,也就是说,里面的数据已经都编译完成,所有安装时一定需要当初安装时的主机环境才能安装。当初建立这个软件的安装环境必须也要在当前主机上出现。如果有过RPM安装经验,碰到这样的问题时的确很头疼。而YUM可以很好的解决这个问题。
YUM是Yellow dog Updater, Modified的缩写,是由Duke University所发起的计划,目的就是为了解决RPM的依赖关系的问题,方便使用者进行软件的安装、升级等等工作。在此在特别说明的是,YUM只是为了解决RPM的依赖关系的问题,而不是一种其它的软件安装模式。当然可以实现这样功能的除了YUM外,还有APT (Advanced Package Tool,是由debian所发展的一个软件管理工具)。
其实YUM的工作原理并不复杂,每一个 RPM软件的头(header)里面都会纪录该软件的依赖关系,那么如果可以将该头的内容纪录下来并且进行分析,可以知道每个软件在安装之前需要额外安装哪些基础软件。也就是说,在服务器上面先以分析工具将所有的RPM档案进行分析,然后将该分析纪录下来,只要在进行安装或升级时先查询该纪录的文件,就可以知道所有相关联的软件。所以YUM的基本工作流程如下:
服务器端:在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。
客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。
在RHEL 5安装好后,在GNOME中打开”ApplicationsàAdd/Remove Software”时,如下图,怎么回事无法使用吗?不是的,因为只有正常的配置的YUM客户端后才可以在这里安装软件。
下面将分别讲述如果配置YUM服务端及客户端。
配置YUM服务器。
安装vsftpd服务,并配置为自动启动(配置为自动启动时,除使用下图中方法外还可直接使用chkconfig vsftpd on)。
将RHEL 5光盘中的Server、VT、Cluster、ClusterStorage四个目录复制到/var/ftp/pub下(如不使用虚拟化及群集后三个目录可不复制)。
确认系统中安装yum(在RHEL 5是已默认安装)、createrepo(用于生成rpm依赖关系及组信息)包。
建立分组文件
在RHEL 5中每个目录下的repodata目录下都有一个repomd.xml,该文件中就记录了rpm包的依赖关系,还有一个comps-rhel5-*.xml文件,这个文件主要记录分组情况,建立yum仓库时,需要先重建该文件。需要重建的目录有:
重建命令如下:
①:用于重建的命令,这里一定要写绝对路径
②:这是该命令的一个Bug
③:这时需要把这个目录手动删除
④:重新运行该命令
配置YUM客户端。
将yum客户端定义库文件(/etc/yum.repos.d/rhel-debuginfo.repo)复制一份(名称任意,但必须以.repo结尾)修改其bashurl及名称即可。
清除yum缓存
YUM客户端命令。
yum install [-y ]package
-y:不提示用户确认直接安装
yum localinstall rpmfile
install与localinstall的区别:install直接通过yum服务器端安装指定包及所有依赖关系,而localinstall是本地已有rpm文件,只要到yum服务器上安装依赖关系。
yum grouplist
显示所有yum服务器定义的组
yum groupinstall packagegroup
一次性安装yum服务器上定义的一组包
yum remove package
yum groupremove packagegroup
yum search searcherm
查找yum服务器上所有符合searcherm关键字的内容
yum list [all]
列出yum服务器所有可用的包
yum info package
yum groupinfo grouppackgroup
yum whatprovides filename
查找指定文件属于那个包
yum clean all
清除yum缓存