软件的升级是对软件功能的改进和安全性的升级,与windows系统类似,linux操作系统下也需要对软件进行定期的更新升级,保持软件始终处于最新状态。Linux操作系统的升级可以分为自动升级和手动升级两种方式:自动升级一般是在有授权的linux发行版或者免费linux发行版下进行的,只要输入升级命令,系统会自动完成升级工作,无需人工干预。 yum是yellowdog updater modified 的缩写,yellow dog(黄狗)也是一个 Linux 的 发行版本,只不过Redhat公司是将这种升级技术利用到自己的发行版上就形成了现在的 yum。 yum是进行linux自动升级常用的一个工具,通过yum工具配合互联网即可实现自动升级系统。例如一台经过授权的Redhat Linux操作系统,或者一台Centos Linux系统,只要你的系统能连接互联网,输入yum update 即可实现系统的自动升级。通过yum进行系统升级实质是yum命令去下载指定的远程互联网 主机上的RPM软件包,然后自动进行安装,同时解决各个软件之间的依赖关系。 手动升级是有针对性的进行某个系统软件的升级,例如升级系统的ssh登录工具、gcc编译工具等等。手动升级其实就是通过RPM包工具实现软件更新的,因此在升级软件时可能会遇到软件之间的依赖关系,升级相对比较麻烦。 下面具体讲述在Centos Linux4.4下如何设置yum工具,进行系统自动升级。 1.yum的安装与配置 (1)yum的安装 检查yum是否已经安装: [root@localhost ~]# rpm -qa|grep yum 如果没有任何显示,表示系统中还没有安装yum工具,yum安装包在centos系统光盘中可以找到,执行如下指令进行安装: [root@localhost ~]# rpm -ivh yum-*.noarch.rpm 安装yum需要python-elementtree、python-sqlite、urlgrabber、yumconf等软件包的支持,这些软件包在Centos Linux系统安装光盘均可找到,如果在安装yum过程中出现软件包之间的依赖性,只需按照依赖提示寻找相应软件包安装即可,直到yum包安装成功。 下面是某个环境的安装示例: [root@localhost ~]# rpm -ivh yum-2.4.3-1.c4.noarch.rpm warning: yum-2.4.3-1.c4.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821 error: Failed dependencies: python-elementtree is needed by yum-2.4.3-1.c4.noarch python-sqlite is needed by yum-2.4.3-1.c4.noarch urlgrabber is needed by yum-2.4.3-1.c4.noarch yumconf is needed by yum-2.4.3-1.c4.noarch [root@localhost ~]# rpm -ivh python-elementtree-1.2.6-4.2.1.i386.rpm warning: python-elementtree-1.2.6-4.2.1.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821 Preparing... ########################################### [100%] 1:python-elementtree ########################################### [100%] root@localhost ~]# rpm -ivh sqlite-3.3.3-1.2.i386.rpm
warning: sqlite-3.3.3-1.2.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821 Preparing... ########################################### [100%] 1:sqlite ########################################### [100%] [root@localhost ~]# rpm -ivh python-sqlite-1.1.7-1.2.i386.rpm warning: python-sqlite-1.1.7-1.2.i386.rpm: V3 DSA signature: NOKEY, key ID 443e1821 Preparing... ########################################### [100%] 1:python-sqlite ########################################### [100%] [root@localhost ~]# rpm -ivh python-urlgrabber-2.9.8-2.noarch.rpm warning: python-urlgrabber-2.9.8-2.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821 Preparing... ########################################### [100%] 1:python-urlgrabber ########################################### [100%] root@localhost ~]# rpm -ivh centos-yumconf-4-4.5.noarch.rpm warning: centos-yumconf-4-4.5.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821 Preparing... ########################################### [100%] 1:centos-yumconf ########################################### [100%] [root@localhost ~]# rpm -ivh yum-2.4.3-1.c4.noarch.rpm warning: yum-2.4.3-1.c4.noarch.rpm: V3 DSA signature: NOKEY, key ID 443e1821 Preparing... ########################################### [100%] 1:yum ########################################### [100%] (2)yum的配置 yum工具安装完毕,接下来的工作是进行yum的配置,yum的配置文件有主配置文件/etc/yum.conf、资源库配置目录/etc/yum.repos.d,yum安装后,默认的一些资源库配置可能无法使用,因此需要进行 修改,下面是/etc/yum.repos.d/CentOS-Base.repo资源库配置文件各项的详细含义: [root@localhost ~]#/etc/yum.repos.d/CentOS-Base.repo [base] name=CentOS-4 - Base #name 就是发行版的名称,其格式表示“操作系统名和释出版本”,“base”是表明此段寻找的是base包信息。

baseurl=http://mirror.centos.org/centos/4/os/$basearch/
#baseurl”表示yum在互联网上查找升级文件的URL地址。其中“$basearch”代表了系统的硬件构架如“i386”、“x86-64等,同时,yum在资源更新时,会检查baseurl/repodata/repomd.xml文件。 “repomd.xml”是一个索引文件,它的作用是提供了更新rpm包文件的下载信息和SHA校验值。 “repomd.xml”包括了3个文件,分别为“other.xml.gz”、”filelists.xml.gz”和”primary.xml.gz”,表示的含义依次是“其它更新包列表”、“更新文件集中列表”和“主要更新包列表”。

gpgcheck=1
#gpgcheck表示是否启用gpg检查,1表示启用,0表示不启用校验,如果启用,就是需要在配置文件里注明GPG-RPM-KEY的位置,可以看到下面gpgkey字段,指定了GPG-RPM-KEY验证文件的位置。

#released updates [update] #本段是updates更新模块要用到的部分配置。 name=CentOS-4 - Updates baseurl=http://mirror.centos.org/centos/4/updates/$basearch/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4 #gpgkey指定GPG密钥的地址

#packages used/produced in the build but not released #本段指定的是尚未发布的软件包部分(addons)配置 [addons] name=CentOS-4 - Addons baseurl=http://mirror.centos.org/centos/4/addons/$basearch/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#additional packages that may be useful #本段指定的是有用的额外软件包部分(extras)配置 [extras] name=CentOS-4 - Extras baseurl=http://mirror.centos.org/centos/4/extras/$basearch/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#additional packages that extend functionality of existing packages #本段指定的是扩展的额外软件包部分(centosplus)配置 [centosplus] name=CentOS-4 - Plus baseurl=http://mirror.centos.org/centos/4/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

#contrib - packages by Centos Users #这里是contrib部分 [contrib] name=CentOS-4 - Contrib baseurl=http://mirror.centos.org/centos/4/contrib/$basearch/ gpgcheck=1 enabled=0 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4 2.yum的特点  安装方便,自动解决增加或删除rpm包时遇到的依赖 性问题。  可以同时配置多个资源库(Repository)  配置文件简单明了(/etc/yum.conf、/etc/yum.repos.d/CentOS-Base.repo)  保持与RPM数据库的一致性 注意:yum会自动下载所有所需的升级资源包并默认放置在/var/cache/yum目录下, 当第一次使用yum或yum资源库更新 时,软件升级所需的时间可能较长。 3.yum的日常用法 (1)通过yum安装和删除RPM包  安装rpm包,如dhcp [root@localhost ~]#yum install dhcp  删除rpm包,包括与该包有依赖 性的包 [root@localhost ~]#yum remove licq 注意:同时会提示删除licq-gnome,licq-qt,licq-text (2)通过yum工具更新软件包  检查可更新的rpm包: [root@localhost ~]#yum check-update  更新所有的rpm包: [root@localhost ~]#yum update  更新指定的rpm包,如更新kernel和kernel source: [root@localhost ~]#yum update kernel kernel-source  大规模的版本升级, 与yum update不同的是, 陈旧的淘汰的包也会升级: [root@localhost ~]#yum upgrade (3)通过yum查询RPM包信息  列出资源库中所有可以安装或更新的rpm包的信息: [root@localhost ~]#yum info  列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息: [root@localhost ~]#yum info vsftpd [root@localhost ~]#yum info perl* 注意:可以在rpm包名中使用匹配符, 如上面例子是列出所有以perl开头的rpm包的信息。  列出资源库中所有可以更新的rpm包的信息: [root@localhost ~]#yum info updates  列出已经安装的所有的rpm包的信息: [root@localhost ~]#yum info installed  列出已经安装的但是不包含在资源库中的rpm包的信息: [root@localhost ~]#yum info extras 注:也就是 通过其它网站下载安装的rpm包的信息。  列出资源库中所有可以更新的rpm包: [root@localhost ~]#yum list updates  列出已经安装的所有rpm包: [root@localhost ~]#yum list installed  列出已经安装的但不包含在资源库中的rpm包: [root@localhost ~]#yum list extras 注:也就是通过其它网站下载安装的rpm包。  列出资源库中所有可以安装或更新的rpm包: [root@localhost ~]#yum list  列出资源库中特定的可以安装或更新以及已经安装的rpm包: [root@localhost ~]#yum list sendmail [root@localhost ~]#yum list gcc* 注意:可以在rpm包名中使用匹配符, 如上面例子是列出所有以gcc开头的rpm包。  搜索匹配特定字符的rpm包的详细信息: [root@localhost ~]#yum search wget 注意:可以通过“search”在rpm包名, 包描述中进行搜索。  搜索包含特定文件名的rpm包: [root@localhost ~]#yum provides realplay (4)通过yum操作暂存信息(/var/cache/yum)  清除暂存的rpm包文件: [root@localhost ~]#yum clean packages  清除暂存的rpm头文件: [root@localhost ~]#yum clean headers  清除暂存中旧的rpm头文件: [root@localhost ~]#yum clean oldheaders  清除暂存中旧的rpm头文件和包文件: [root@localhost ~]#yum clean 或 [root@localhost ~]#yum clean all 注意: 上面的两条命令相当于yum clean packages + yum clean oldheaders。 4.Redhat Linux下用yum升级系统 yum也可以升级Redhat Linux系统,在Redhat Linux系统安装盘中默认没有yum的安装包,由于Redhat Linux与Centos Linux基本一致,因此可以用同版本同内核的Centos Linux的yum包在Redhat Linux上进行安装。安装过程在上面章节已经讲述,这里不在多说。 由于使用的是Centos Linux的yum包在Redhat Linux下进行的安装,因此在Redhat Linux下需要增加资源库,定义yum的非官方库文件,让一些必需的软件包通过yum也能够安装。 首先建立dag.repo,定义非官方库: [root@localhost ~]# vi /etc/yum.repos.d/dag.repo [dag] name=Dag RPM Repository for RHEL4 baseurl=http://ftp.riken.jp/Linux/dag/redhat/el4/en/$basearch/dag/ enabled=1 gpgcheck=1 接着导入非官方库的GPG: [root@localhost ~]# rpm --import
http://ftp.riken.jp/Linux/caos/centos/RPM-GPG-KEY-centos4 注意:此步骤很重要,如果没有导入授权的RPM-GPG-KEY,在使用yum升级安装软件时就会提示软件不合法,结合上下文可以看出,在Centos下进行yum配置的时候,并没有涉及到导入RPM-GPG-KEY,那是因为连接的资源库为Centos官方的库,而升级的系统也是Centos,当然无需授权,而这里我们升级的系统是Redhat Linux,而用的资源文件是Centos的,所以必须导入Centos的RPM-GPG-KEY,系统才认为升级的包是合法的。 最后,就可以使用非官方定义的rpm包升级系统: [root@localhost ~]#yum update