在了解 YUM 之前我们先来简单介绍下 RPM ,什么是 RPM Redhat Package Manager 红帽包管理者;就像在 windows 中安装 .exe 一样,不过在安装 RPM 的时候会有很多的依赖关系,比如我们需要安装 MYSQL 软件包就需要安装其他一系列的其他软件例如:    
[root@localhost Server]# rpm -ivh MySQL-python-1.2.1-1.i386.rpm
warning: MySQL-python-1.2.1-1.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
        libmysqlclient_r.so.15 is needed by MySQL-python-1.2.1-1.i386
        libmysqlclient_r.so.15(libmysqlclient_15) is needed by MySQL-python-1.2.1-1.i386
        mx is needed by MySQL-python-1.2.1-1.i386
        mysql is needed by MySQL-python-1.2.1-1.i386
 
        我们需要安装前面的几个具有依赖关系的数据包,而这些数据包需要手动的一个一个安装,非常的麻烦,而YUM能够解决RPM的依赖关系。
      Yum Yellow dog Updater, Modified )翻译成中文的意思就是黄狗软件升级工具。RHEL5.1以后的版本才默认安装的,之前的版本需要安装YUM软件包才能使用。
    YUM不但解决了RPM软件包依赖关系,而且还方便更新,删除RPM包,同时也便于管理大量系统的更新问题。
    由于本人环境有限,只有个RHEL5的虚拟机,之前版本的虚拟机被卸载了,而卸载YUM又需要卸载很多相关的依赖包,所以就没卸载
[root@localhost Server]# rpm -e yum
error: Failed dependencies:
        yum >= 3.2.18 is needed by (installed) yum-security-1.1.16-13.el5.noarch
        yum >= 3.2.19-15 is needed by (installed) yum-rhn-plugin-0.5.3-30.el5.noarch
        yum >= 3.2.0 is needed by (installed) yum-updatesd-0.9-2.el5.noarch
        yum >= 3.2.5-2 is needed by (installed) pirut-1.3.28-13.el5.noarch
 
没有安装yum的可以安装一下,我就直接用RHEL5的默认安装的了。
   按照Linux国际化的标准,同所有的服务一样都有/etc/yum.conf这样一个配置文件。我们看下:
[root@localhost Server]# cat /etc/yum.conf |grep -v ^#
[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
distroverpkg=redhat-release
tolerant=1
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
metadata_expire=1h
[mail]                                     声明以下是为YUM所作的选项
cachedir                                是缓存存放的路径
keepcache                            是指当安装完成后时候把该包的信息缓存下来
debuglevel                           是错误级别
logfile                                    是yum软件日志的存放路径
distroverpkg                         根据什么确定包的版本
tolerant                                  是否提示包安装信息错误
exactarch                               根据CUP的架构来确定是否安装包
obsoletes                              yum升级相关选项
gpgcheck                              时候检查包的签名
plugins                                  是否添加插件功能
metadata_expire                    过期时间
以上的信息是主配置文件中的,我们基本保持不变,我们还是看看下面的例子吧
[root@localhost Server]# cat /etc/yum.repos.d/rhel-debuginfo.repo
[rhel-debuginfo]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
baseurl=file:///mnt/Server/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[  ]                                         里面的源的名字
name                                     对库描述
baseurl                                 下载源的URL路径
enabled                                能否使用这个数据库
gpgcheck                             同主配置文件一样,检查包的签名
gpgkey                                 签名的URL路径
刚刚中间提到了一个源的词;究竟什么是源?这个源就是下载源,把需要的RPM包做一个依赖关系的处理,createrepo创建源的命令不过需要使用RPM安装一下createrepo包才行,企5的DVD光盘中默认就存在这个源。
[root@localhost 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%]
所有的配置就告一段落,下面就介绍下常用命令
yum install 包名→→→→→→→→安装包
yum update 包名→→→→→→→→升级包
yum remove 包名→→→→→→→→删除包
yum list 包名→→→→→→→→→→查询包的信息
yum clean all→→→→→→→→→→清空缓存信息
*******************************************************************
实例安装GCC
[root@localhost /]# umount /dev/cdrom
[root@localhost /]# mount /dev/cdrom /mnt/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@localhost /]# vim /etc/yum.repos.d/rhel-debuginfo.repo 
[rhel-debuginfo]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
baseurl=file:///mnt/Server/
enabled=1
gpgcheck=0
:wq
[root@localhost /]# yum install gcc*
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package gcc-java.i386 0:4.1.2-44.el5 set to be updated
--> Processing Dependency: libgcj-devel = 4.1.2-44.el5 for package: gcc-java
---> Package gcc-gfortran.i386 0:4.1.2-44.el5 set to be updated
--> Processing Dependency: libgfortran = 4.1.2-44.el5 for package: gcc-gfortran
--> Processing Dependency: libgfortran.so.1 for package: gcc-gfortran
---> Package gcc43-gfortran.i386 0:4.3.2-7.el5 set to be updated
--> Processing Dependency: libgfortran43 = 4.3.2-7.el5 for package: gcc43-gfortran
--> Processing Dependency: libgfortran.so.3 for package: gcc43-gfortran
---> Package gcc-c++.i386 0:4.1.2-44.el5 set to be updated
--> Processing Dependency: libstdc++-devel = 4.1.2-44.el5 for package: gcc-c++
---> Package gcc.i386 0:4.1.2-44.el5 set to be updated
--> Processing Dependency: libgomp >= 4.1.2-44.el5 for package: gcc
--> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc
---> Package gcc43.i386 0:4.3.2-7.el5 set to be updated
---> Package gcc-gnat.i386 0:4.1.2-44.el5 set to be updated
--> Processing Dependency: libgnat = 4.1.2-44.el5 for package: gcc-gnat
--> Processing Dependency: libgnat-4.1.so for package: gcc-gnat
--> Processing Dependency: libgnarl-4.1.so for package: gcc-gnat
---> Package gcc-objc.i386 0:4.1.2-44.el5 set to be updated
--> Processing Dependency: libobjc = 4.1.2-44.el5 for package: gcc-objc
--> Processing Dependency: libobjc.so.1 for package: gcc-objc
---> Package gcc43-c++.i386 0:4.3.2-7.el5 set to be updated
--> Processing Dependency: libstdc++43-devel = 4.3.2-7.el5 for package: gcc43-c++
---> Package gcc-objc++.i386 0:4.1.2-44.el5 set to be updated
--> Running transaction check
---> Package libgomp.i386 0:4.3.2-7.el5 set to be updated
---> Package glibc-devel.i386 0:2.5-34 set to be updated
--> Processing Dependency: glibc-headers = 2.5-34 for package: glibc-devel
--> Processing Dependency: glibc-headers for package: glibc-devel
---> Package libgfortran43.i386 0:4.3.2-7.el5 set to be updated
---> Package libgnat.i386 0:4.1.2-44.el5 set to be updated
---> Package libobjc.i386 0:4.1.2-44.el5 set to be updated
---> Package libstdc++-devel.i386 0:4.1.2-44.el5 set to be updated
---> Package libgcj-devel.i386 0:4.1.2-44.el5 set to be updated
--> Processing Dependency: zlib-devel for package: libgcj-devel
--> Processing Dependency: /usr/lib/libz.so for package: libgcj-devel
---> Package libstdc++43-devel.i386 0:4.3.2-7.el5 set to be updated
---> Package libgfortran.i386 0:4.1.2-44.el5 set to be updated
--> Running transaction check
---> Package zlib-devel.i386 0:1.2.3-3 set to be updated
---> Package glibc-headers.i386 0:2.5-34 set to be updated
--> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers
--> Processing Dependency: kernel-headers for package: glibc-headers
--> Running transaction check
---> Package kernel-headers.i386 0:2.6.18-128.el5 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
============================================================================
 Package               Arch     Version            Repository          Size
============================================================================
Installing:
 gcc                   i386     4.1.2-44.el5       rhel-debuginfo     5.2 M
 gcc-c++               i386     4.1.2-44.el5       rhel-debuginfo     3.4 M
 gcc-gfortran          i386     4.1.2-44.el5       rhel-debuginfo     3.1 M
 gcc-gnat              i386     4.1.2-44.el5       rhel-debuginfo      11 M
 gcc-java              i386     4.1.2-44.el5       rhel-debuginfo     2.9 M
 gcc-objc              i386     4.1.2-44.el5       rhel-debuginfo     2.6 M
 gcc-objc++            i386     4.1.2-44.el5       rhel-debuginfo     2.8 M
 gcc43                 i386     4.3.2-7.el5        rhel-debuginfo     8.1 M
 gcc43-c++             i386     4.3.2-7.el5        rhel-debuginfo     3.8 M
 gcc43-gfortran        i386     4.3.2-7.el5        rhel-debuginfo     3.7 M
Installing for dependencies:
 glibc-devel           i386     2.5-34             rhel-debuginfo     2.0 M
 glibc-headers         i386     2.5-34             rhel-debuginfo     598 k
 kernel-headers        i386     2.6.18-128.el5     rhel-debuginfo     912 k
 libgcj-devel          i386     4.1.2-44.el5       rhel-debuginfo     1.4 M
 libgfortran           i386     4.1.2-44.el5       rhel-debuginfo     231 k
 libgfortran43         i386     4.3.2-7.el5        rhel-debuginfo     240 k
 libgnat               i386     4.1.2-44.el5       rhel-debuginfo     989 k
 libgomp               i386     4.3.2-7.el5        rhel-debuginfo      67 k
 libobjc               i386     4.1.2-44.el5       rhel-debuginfo     102 k
 libstdc++-devel       i386     4.1.2-44.el5       rhel-debuginfo     2.9 M
 libstdc++43-devel     i386     4.3.2-7.el5        rhel-debuginfo     3.9 M
 zlib-devel            i386     1.2.3-3            rhel-debuginfo     100 k
Transaction Summary
============================================================================
Install     22 Package(s)
Update       0 Package(s)
Remove       0 Package(s)
Total download size: 60 M
Is this ok [y/N]:y
Downloading Packages:
------------------------------------------------------------------------------
Total                                         1.3 GB/s |  60 MB     00:00
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : libgomp                                         [ 1/22]
  Installing     : libgnat                                         [ 2/22]
  Installing     : libgfortran                                     [ 3/22]
  Installing     : libgfortran43                                   [ 4/22]
  Installing     : libobjc                                         [ 5/22]
  Installing     : libstdc++43-devel                               [ 6/22]
  Installing     : kernel-headers                                  [ 7/22]
  Installing     : glibc-headers                                   [ 8/22]
  Installing     : glibc-devel                                     [ 9/22]
  Installing     : libstdc++-devel                                 [10/22]
  Installing     : zlib-devel                                      [11/22]
  Installing     : gcc                                             [12/22]
  Installing     : gcc43                                           [13/22]
  Installing     : libgcj-devel                                    [14/22]
  Installing     : gcc-objc                                        [15/22]
  Installing     : gcc-c++                                         [16/22]
  Installing     : gcc-gfortran                                    [17/22]
  Installing     : gcc-java                                        [18/22]
  Installing     : gcc-objc++                                      [19/22]
  Installing     : gcc-gnat                                        [20/22]
  Installing     : gcc43-c++                                       [21/22]
  Installing     : gcc43-gfortran                                  [22/22]
Installed: gcc.i386 0:4.1.2-44.el5 gcc-c++.i386 0:4.1.2-44.el5 gcc-gfortran.i386 0:4.1.2-44.el5 gcc-gnat.i386 0:4.1.2-44.el5 gcc-java.i386 0:4.1.2-44.el5 gcc-objc.i386 0:4.1.2-44.el5 gcc-objc++.i386 0:4.1.2-44.el5 gcc43.i386 0:4.3.2-7.el5 gcc43-c++.i386 0:4.3.2-7.el5 gcc43-gfortran.i386 0:4.3.2-7.el5
Dependency Installed: glibc-devel.i386 0:2.5-34 glibc-headers.i386 0:2.5-34 kernel-headers.i386 0:2.6.18-128.el5 libgcj-devel.i386 0:4.1.2-44.el5 libgfortran.i386 0:4.1.2-44.el5 libgfortran43.i386 0:4.3.2-7.el5 libgnat.i386 0:4.1.2-44.el5 libgomp.i386 0:4.3.2-7.el5 libobjc.i386 0:4.1.2-44.el5 libstdc++-devel.i386 0:4.1.2-44.el5 libstdc++43-devel.i386 0:4.3.2-7.el5 zlib-devel.i386 0:1.2.3-3
Complete!

------------------------------------------------------------------------------------------
凭借自己二把刀的水平写出来的,如果您发现那里有错误请通知我
                                                                             谢谢      O(∩_∩)O~