在学习redhat过程中,安装软件也是件烦人的事,虽然RPM可以解决大部分的问题,但是RPM打包中默认有一个数据库记录,记录这个软件要安装的时候必须要的其他软件,当安装软件的时候会根据这个记录来判断系统中依赖的其他软件是否满足,如满足就安装,不满足就不安装。 所以在安装一些软件时,经常遇到安装一个软件,还要先安装某个依赖的软件包,很影响办事效率。

YUM目的就是为了解决RPM依赖关系的问题,方便使用者进行软件的安装、升级等工作。
YUM原理:在服务器上面先以分析工具将所有的RPM文件进行分析,然后将该分析记录下来,只要在进行安装或升级时先查询该记录的文件,就可以知道所有相关联的软件,然后在安装时一并安装,大大节省了保证的时间。

YUM仓库的搭建,有好几种方式,比如利用http,ftp……,这里使用的是ftp
一、FTP服务器作为YUM源,默认使用匿名登录即可。将RHEL光盘中默认提供的RPM包制作为一个YUM仓库。
(1)安装并配置vsftpd:
这里使用RHEL光盘进行安装:

[root@Server Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm
warning: vsftpd-2.0.5-16.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:vsftpd                 ########################################### [100%]

安装完成后使用 chkconfig vsftpd on 设置开机后启动,再启动服务

[root@Server ~]# chkconfig vsftpd on
[root@Server ~]# /etc/init.d/vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]

由于vsftpd 默认提供匿名服务,所以不用进行其他的配置。

(2)确认系统中是否安装YUM服务器工具,RHEL5默认已安装:

[root@Server ~]# rpm -qa | grep yum
yum-updatesd-0.9-2.el5
yum-metadata-parser-1.1.2-3.el5
yum-3.2.22-20.el5            #就是这个了
yum-security-1.1.16-13.el5
yum-rhn-plugin-0.5.4-13.el5

(3)安装createrepo,用于生成RPM依赖关系及分组信息:

[root@Server Server]# rpm -ivh createrepo-0.4.11-3.el5.noarch.rpm
warning: createrepo-0.4.11-3.el5.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:createrepo             ########################################### [100%]

(4)将RHEL光盘的所有内容复制到ftp的匿名用户可登录目录/var/ftp/pub目录下

[root@Server RHEL_5.4 i386 DVD]# cp -r * /var/ftp/pub/

注:安装系统的时候要确保/var目录有足够的空间可以容纳光盘的内容

(5)生成RPM包依赖关系,在Server、VT等目录下都有一个名为repodata 的目录,在repodata目录中有一个repomd.xml的文件,这个文件记录了所有目录RPM包的依赖关系。还有一个comps-rhel5-*.xml文件,这个文件主要记录分组信息。

可以直接使用 createrepo -g /var/ftp/pub/Server 命令生成依赖关系,使用-g参数主要有两个作用:
一是生成依赖关系,二是可以更新分组文件信息。

[root@Server ~]# createrepo -g /var/ftp/pub/Server/repodata/comps-rhel5-server-core.xml  /var/ftp/pub/Server/

如果有使用虚拟化VT可以再执行以下:

[root@Server ~]# createrepo -g /var/ftp/pub/VT/repodata/comps-rhel5-vt.xml /var/ftp/pub/VT/

二、客户端的配置:
YUM客户端配置文件目录/etc/yum.repos.d 。配置文件必须以repo文件结尾,一个YUM客户端可以同时使用多个YUM仓库中的YUM源。以下是默认的YUM配置文件:

[root@station1 ~]# cat /etc/yum.repos.d/rhel-debuginfo.repo
[rhel-debuginfo]   
#YUM标签,同时存在多个配置文件的时候,这个名称不能相同,否则会冲突
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
#YUM名字,多个配置文件的时候不能重复
baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/$basearch/Debuginfo/
#YUM源地址,如我这里应该是:ftp://192.168.0.254/pub/Server
enabled=0
#YUM源是否启用。1为启用,反之
gpgcheck=1
#是否进行数字签名检测,没有签名时不安装。1为启用,反之。
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
#redhat发行版数字签名公钥

(1)配置一个YUM客户端:
为了不破坏默认的配置,复制一份来修改。
[root@station1 ~]# cd /etc/yum.repos.d/
[root@station1 yum.repos.d]# cp -p rhel-debuginfo.repo server.repo
[root@station1 yum.repos.d]# vim server.repo
[Base]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
baseurl=
ftp://192.168.0.254/pub/Server/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

                                                            
(2)测试使用yum repolist读取列表

[root@station1 ~]# yum repolist
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Base                                                     | 1.1 kB     00:00    
Base/primary                                             | 807 kB     00:00    
Base                                                                  2292/2292
repo id      repo name                                            status
Base         Red Hat Enterprise Linux 5Server - i386 - Debug      enabled: 2,292
repolist: 2,292

安装个软件试一下:

[root@station1 ~]# yum install x3270
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package x3270.i386 0:3.3.4p7-3.el5.4 set to be updated
--> Processing Dependency: libicuuc.so.36 for package: x3270
--> Processing Dependency: libicui18n.so.36 for package: x3270
--> Running transaction check
---> Package libicu.i386 0:3.6-5.11.4 set to be updated
……