为什么使用yum
Linux系统维护中令管理员很头疼的就是软件包之间的依赖性了,往往是你要安装A软件,但是编译的时候告诉你X软件安装之前需要B软件,而当你安装Y软件的时候,又告诉你需要Z库了,好不容易安装好Z库,发现版本还有问题等。由于历史原因,RPM软件包管理系统对软件之间的依存关系没有内部定义,造成安装RPM软件时经常出现令人无法理解的软件依赖问题。其实开源社区早就对这个问题尝试进行解决了,不同的发行版推出了各自的工具,比如YellowDog的YUM(YellowdogUpdater,Modified),Debian的APT(AdvancedPackagingTool)等。开发这些工具的目的都是为了要解决安装RPM时的依赖性问题,而不是额外再建立一套安装模式。这些软件也被开源软件爱好者们逐渐移植到别的发行版上。目前,APT和YUM都可以运行在RedHat系统上。目前yum是RedHat/Fedora系统上默认安装的更新系统。
什么是yum
yum是YellowdogUpdater,Modified的简称,起初是由yellowdog发行版的开发者TerraSoft研发,用python写成,那时叫做yup(yellowdogupdater),后经杜克大学的Linux@Duke开发团队进行改进,遂有此名。yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,它可以是http或ftp站点,也可以是本地软件池,但必须包含rpm的header,header包括了rpm包的各种信息,包括描述,功能,提供的文件,依赖性等.正是收集了这些header并加以分析,才能自动化地完成余下的任务。
yum具有如下特点:
自动解决包的倚赖性问题能更方便的添加/删除/更新RPM包
便于管理大量系统的更新问题
可以同时配置多个资源库(Repository)
简洁的配置文件(/etc/yum.conf)
保持与RPM数据库的一致性
有一个比较详细的log,可以查看何时升级安装了什么软件包等
使用方便
yum是CentOS/Fedora系统自带的,因此它能使用CentOS官方的软件源,完成各种官方发布的各种升级。对于第三方软件源的支持,yum也不差,大多数支持apt的repository,也能支持yum,比如说freshrpms、fedora.us、livna、dag等。在标准的RedhatEnterpriseLinux上,默认没有安装yum,需要单独下载并安装。此外,RedhatEnterpriseLinux的更新是由Redhat提供的收费服务 但由于RedhatEnterpriseLinux和CentOS是基本通用的,所以可用CentOS源来升级redhat。
1.首先安装yum和相关的rpm包
注意:本安装包只提供给as4系统之用
http://www.swsoft.com.cn/downloads/Prima/Tools/yum_forAS4.tar.gz
下载并解压缩yum包和升级文件,运行下面命令:
[root@localhost yum_forAS4] rpm -ivh *.rpm
[root@localhost yum_forAS4]# rpm -ivh *.rpm |
2.将解压缩后得到的CentOS-Base.repo复制到/etc/yum.repos.d/目录里边。
cp CentOS-Base.repo /etc/yum.repos.d/
现在我们测试用YUM安装一个软件,
[root@localhost yum_forAS4]#yum install zip.i386
Downloading Packages:
|
通过输出可以看到给出了“Publickeyisnotinstalled”提示。那是因为还没有导入YUM的KEY
3.导入Publickey(两种方式)
A、执行如下命令导入GPGKey
rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-4 |
B、编辑CentOS-Base.repo每段末增加“gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-
CentOS-4“
[root@localhost]#cat/etc/yum.repos.d/CentOS-Base.repo
[base] name=CentOS-4-Base baseurl=http://mirror.centos.org/centos/4/os/$basearch/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-4
#releasedupdates [update] name=CentOS-4-Updates baseurl=http://mirror.centos.org/centos/4/updates/$basearch/ gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-4
#packagesused/producedinthebuildbutnotreleased [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-CentOS-4
#additionalpackagesthatmaybeuseful [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-CentOS-4
#additionalpackagesthatextendfunctionalityofexistingpackages [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-CentOS-4
#contrib-packagesbyCentosUsers [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-CentOS-4 |
至此,yum就可以正常使用了。再执行一下刚才的yum install zip.i386
[root@localhost yum_forAS4]# yum install zip.i386 Dependencies Resolved ============================================================================= Transaction Summary Updated: zip.i386 0:2.3-29.EL4 |
完整语法参见其命令手册,
下面只列出较常见的用法。
yum check-update检查可更新的所有软件包 yum update下载更新系统已安装的所有软件包 yum upgrade大规模的版本升级,与yumupdate不同的是,连旧的淘汰的包也升级 yum install<packages>安装新软件包 yum update<packages>更新指定的软件包 yum remove<packages>卸载指定的软件包 yum groupinstall<groupnames>安装指定软件组中的软件包 yum groupupdate<groupnames>更新指定软件组中的软件包 yum groupremove<groupnames>卸载指定软件组中的软件包 yum grouplist查看系统中已经安装的和可用的软件组 yum list列出资源库中所有可以安装或更新以及已经安装的rpm包 yum list<regex>列出资源库中与正则表达式匹配的可以安装或更新以及已经安装的rpm包 yum listavailable列出资源库中所有可以安装的rpm包 yum listavailable<regex>列出资源库中与正则表达式匹配的所有可以安装的rpm包 yum listupdates列出资源库中所有可以更新的rpm包 yum listupdates<regex>列出资源库中与正则表达式匹配的所有可以更新的rpm包 yum listinstalled列出资源库中所有已经安装的rpm包 yum listinstalled<regex>列出资源库中与正则表达式匹配的所有已经安装的rpm包 yum listextras列出已经安装的但是不包含在资源库中的rpm包 yum listextras<regex>列出与正则表达式匹配的已经安装的但是不包含在资源库中的rpm包 yum listrecent列出最近被添加到资源库中的软件包 yum search<regex>检测所有可用的软件的名称、描述、概述和已列出的维护者,查找与正则表达式匹配的值 yum provides<regex>检测软件包中包含的文件以及软件提供的功能,查找与正则表达式匹配的值 yum cleanheaders清除缓存中的rpm头文件 yum cleanpackages清除缓存中rpm包文件 yum cleanall清除缓存中的rpm头文件和包文件 yum deplist<packages>显示软件包的依赖信息
|
当第一次使用yum或yum资源库有更新时,yum会自动下载所有所需的headers放置于/var/cache/yum目录下,所需时间可能较长。
还可以使用yuminfo命令列出包信息,yuminfo可用的参数与yumlist的相同。
yum命令还可以使用-y参数用于用yes回答命令运行时所提出的问题。
4、repo文件说明:
在.repo文件中,配置语法是分段的,每一段配置一个软件仓库,配置语法如下:
[repositoryid] name=Somenameforthisrepository baseurl=url://server1/path/to/repository/ url://server2/path/to/repository/ url://server3/path/to/repository/ mirrorlist=url://path/to/mirrorlist/repository/ enabled=0/1 gpgcheck=0/1 gpgkey=AURLpointingtotheASCII-armouredGPGkeyfilefortherepository |
其中:
repositoryid:用于指定一个仓库
name:用于指定易读的仓库名称
baseurl:用于指定本仓库的URL,可以是如下的几种类型:
http—用于指定远程HTTP协议的源
ftp—用于指定远程FTP协议的源
file—用于本地镜像或NFS挂装文件系统
mirrorlist:用于指定仓库的镜像站点
enabled:用于指定是否使用本仓库,默认值为1,即可用
gpgcheck:用于指定是否检查软件包的GPG签名
gpgkey:用于指定GPG签名文件的URL
注:本文借鉴于:http://blog.163.com/mingyan_xiong/blog/static/11781591820091027495846/