首先简单的比较一下,传统的LINUX下的软件安装,几乎到了令初学者崩溃的地步,很多人是驾驭不了软件安装,最终选择了放弃LINUX,我完全从Windows转到LINUX上来也有2年多的时间,之前也是一直徘徊在双系统和虚拟机之间。
   传统的软件安装需要使用者具有良好的软件或是程序设计基础,有些情况下还要修改内核和编译源代码,结果在安装时就晕了,就算有时同一种编译方法,环境的不同也会使喜欢LINUX的朋友们屡屡失败。
   本文主要讲解的是本地安装库的创建,基于RHEL5,在最后还会涉及一个关于第三方软件库的配置,也是目前我电脑上的配置。
   yum, Yellow dog Update, Modified.它是使用了rpm作为了后端平台,加上自动获取依赖关系而闻名,充分的体验了其在依赖性关系解决方面的优势,也让几个主要的LINUX发行版引以为傲,如red hat, suse, 还有国内的一些发行版,另外一大阵营,则是以debian所带领的使用的dpkg安装方式,这里就不做介绍了。
   首先,我们先来创建本地安装源,然后再介绍yum如何使用.
Part I. 如何创建本地安装源
第一步, 选定一个安装源的存放目录
     因为我的电脑里装有ftp服务器,所以我将安装源的路径指定到ftp的默认目录之下,如
 

[root@bruce ~]# mkdir /var/ftp/pub/repo


     然后将RHEL5的安装光盘放入光驱,挂载并将内容全部copy至刚才创建的目录中:
    

[root@bruce ~]# mount /dev/cdrom /mnt
     [root@bruce ~]# cp -R /mnt/* /var/ftp/pub/repo


第二步,安装本地源关系创建工具createrepo
 

[root@bruce mnt]# cd Server/
     [root@bruce Server]# pwd
     /mnt/Server
     [root@bruce Server]# rpm -ivh createrepo-0.4.11-3.el5


第三步,创建源依赖性关系
     Red Hat 所分发的软件,其中已经针对光盘介质做好了软件包的依赖关系,重新移动位置后,我们需要重新创建这个关系,操作起来差不复杂,因为它集成了相关的文件,我们只需参数文件来创建即可,说的那么复杂,其实所有的动作都是电脑完成,我们只需要打一条命令即可。
    

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


     这句话就是说,按照comps-rhel5-server-core.xml文件中指定的依赖关系来处理我们复制过去的文件,大家可以看到这个Server目录,里面存放了系统大部分的软件包,

[root@bruce mnt]# ls
Cluster                RELEASE-NOTES-ko.html     RELEASE-NOTES-U4-kn.html
ClusterStorage         RELEASE-NOTES-ml.html     RELEASE-NOTES-U4-ko.html
EULA                   RELEASE-NOTES-mr.html     RELEASE-NOTES-U4-ml.html
eula.en_US             RELEASE-NOTES-or.html     RELEASE-NOTES-U4-mr.html
GPL                    RELEASE-NOTES-pa.html     RELEASE-NOTES-U4-or.html
images                 RELEASE-NOTES-pt_BR.html  RELEASE-NOTES-U4-pa.html
isolinux               RELEASE-NOTES-ru.html     RELEASE-NOTES-U4-pt_BR.html
README-en              RELEASE-NOTES-si.html     RELEASE-NOTES-U4-ru.html
README-en.html         RELEASE-NOTES-ta.html     RELEASE-NOTES-U4-si.html
RELEASE-NOTES-as.html  RELEASE-NOTES-te.html     RELEASE-NOTES-U4-ta.html
RELEASE-NOTES-bn.html  RELEASE-NOTES-U4-as.html  RELEASE-NOTES-U4-te.html
RELEASE-NOTES-de.html  RELEASE-NOTES-U4-bn.html  RELEASE-NOTES-U4-zh_CN.html
RELEASE-NOTES-en       RELEASE-NOTES-U4-de.html  RELEASE-NOTES-U4-zh_TW.html
RELEASE-NOTES-en.html  RELEASE-NOTES-U4-en       RELEASE-NOTES-zh_CN.html
RELEASE-NOTES-es.html  RELEASE-NOTES-U4-en.html  RELEASE-NOTES-zh_TW.html
RELEASE-NOTES-fr.html  RELEASE-NOTES-U4-es.html  RPM-GPG-KEY-redhat-beta
RELEASE-NOTES-gu.html  RELEASE-NOTES-U4-fr.html  RPM-GPG-KEY-redhat-release
RELEASE-NOTES-hi.html  RELEASE-NOTES-U4-gu.html  Server
RELEASE-NOTES-it.html  RELEASE-NOTES-U4-hi.html  TRANS.TBL
RELEASE-NOTES-ja.html  RELEASE-NOTES-U4-it.html  VT
RELEASE-NOTES-kn.html  RELEASE-NOTES-U4-ja.html


    我们进入到RHEL5的镜像中可以看到以上标有蓝色字体的文件夹,这些就是RHEL5系列所存放软件包的库了, 下面来个简单的说明:
    Server: 系统中大部分的应用软件和工具都存在这里
    VT:LINUX虚拟化,就是我们常说的XEN工具库
    Cluster:供群集使用的工具库
    ClusterStorage:供群集存储使用的工具库
    我们上面创建了Server这一个库,下面我们只要以相类似的方法依次创建就好了
 

[root@bruce ~]# createrepo -g /var/ftp/pub/repo/VT/repodata/comps-rhel5-vt.xml /var/ftp/pub/repo/VT/
    [root@bruce ~]# createrepo -g /var/ftp/pub/repo/Cluster/repodata/comps-rhel5-cluster.xml /var/ftp/pub/repo/Cluster
    [root@bruce ~]# createrepo -g /var/ftp/pub/repo/ClusterStorage/repodata/comps-rhel5-cluster-st.xml /var/ftp/pub/repo/ClusterStorage/


    如果你是RHEL5.1的系统,那么你在每创建一个库时,它就会产生一个错误,以我这个例子来说,应该是已经存在/var/ftp/pub/repo/Server/.olddata这个目录,只要将其删除再重新创建一下就可以了,这个问题在RHEL5.1之后的版本不会出现了。
第四步,选择更新软件时的传输服务
    本例中,使用了vsftpd创建的ftp服务器目录存放的更新库,那么我就出于简便,直接使用了ftp的传输服务了。
第五步,更改客户端YUM更新配置文件。
    我们先把rhel5中自带的一个repo文件复制成另外一个叫做server.repo,我不建议直接修改原文件,这也是LINUX中很多服务配置时所要做到了。在yum库的创建时,只要是存放在yum.repos.d目录下的以.repo结尾的文件都会被认为是安装库的配置文件。

[root@bruce ~]#cp /etc/yum.repos.d/rhel-debuginfo.repo /etc/yum.repos.d/server.repo
[Server]
name=Red Hat EnterPrise Linux Server
baseurl=ftp://bruce.marsux.net/pub/repo/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[VT]
name=Red Hat EnterPrise Linux VT
baseurl=ftp://bruce.marsux.net/pub/repo/VT
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[Cluster]
name=Red Hat Enterprise Linux Cluster
baseurl=ftp://bruce.marsux.net/pub/repo/Cluster
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[ClusterStorage]
name=Red Hat EnterPrise Linux ClusterStorage
baseurl=ftp://bruce.marsux.net/pub/repo/ClusterStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release


     这样子一个配置文件就完成了,可能大家初次接触的话,看不出来为什么这样写,我们来解释一下:
[....]     代表这个库的名字,必须是唯一的,不可以重复。
name=     是这个库的说明,没有太大的实际意义,只是一个字段说明。
baseurl=  说明采取什么方式传输,具体路径在哪里,可以使用的方式有,file://,ftp://,http://等
enabled=1  说明启用这个更新库,0表示不启用。
gpgcheck=1 表示使用gpg文件来检查软件包的签名
gpgkey=    表示gpg文件所存放的位置,此处也可以有http方式的位置。
然后保存退出。
第六步,安装软件
先将yum缓存中的信息清除,以防止无法完成更新

[root@bruce ~]# yum clean all


开启ftp服务,否则肯定安装不了软件,当然如果你使用的是http或是其他方式就做相应的动作。

[root@bruce ~]# service vsftpd restart
Shutting down vsftpd:                                      [  OK  ]
Starting vsftpd for vsftpd:                                [  OK  ]
[root@bruce ~]# chkconfig vsftpd on
[root@bruce ~]# yum -y install vnc


根据提示进行安装,是不是感觉比rpm以及编译安装方便很多呀?
其实还有很多的参数可供使用,如下:
   

yum install 软件名1 [软件名2] [...]
        yum update [软件名1][软件名2] [...]
        yum check-update
        yum upgrade [软件1] [软件2] [...]
        yum remove | erase 软件名1 [软件名2] [...]
        yum list [...]
        yum info [...]
        yum provides | whatprovides feature1 [feature2] [...]
        yum clean [ packages | headers | metadata | dbcache | all ]
        yum makecache
        yum groupinstall 软件组1 [软件组2] [...]
        yum groupupdate 软件组1 [软件组2] [...]
        yum grouplist [hidden] [groupwildcard] [...]
        yum groupremove group1 [group2] [...]
        yum groupinfo 软件组名 [...]
        yum search 字符串1 [字符串2] [...]
        yum shell [文件名]
        yum resolvedep 依赖关系1 [依赖关系2] [...]
        yum localinstall rpm包1 [rpm包2] [...]
        yum localupdate rpm包1 [rpm包2] [...]
        yum reinstall 软件包1 [软件包2] [...]
        yum downgrade 软件包1 [软件包2] [...]
        yum deplist 软件包1 [软件包2] [...]
        yum repolist [all|enabled|disabled]
        yum help [command]


以上就是yum全部的可用参数了,自动分析依赖性关系是它最好的一个特点,也是目前最方便的安装方法,但有些时候大家发现这么一个问题,好多软件找不着,这是为什么呢,主要是因为,在企业版的操作系统中,实际部署时不可能会出现那么多的娱乐,影音软件等,当然如果你只是在桌面平台使用,那么,我们只需加上一个第三方的库,或是让Centos的库加入给RHEL5使用,网上可以下载得到,我们接下来的文章再介绍.