一、YUM简介
1、yum是什么?
yum = Yellow dog Updater, Modified 起初是由yellow dog这一发行版的开发者Terra Soft研发,用python写成,
那时还叫做yup(yellow dog updater),后经杜克大学的开 发团队进行改进,遂有此名。
yum的宗旨是自动化地升级,安装/移除rpm包,收集rpm包的相 关信息,检查依赖性并自动提示用户解决。
yum的关键之处是要有可靠的repository,顾名思义,这是软件的仓库,
仓库可以是http或ftp站点, 也可以是本地软件池,但必须包含rpm的header,header包括了rpm包的各种信息,
包括描述,功能,提供的文件,依赖性等.正是收集了这些 header并加以分析,才能自动化地完成余下的任务。
如果没有安装,先我们要到下面的地址下载与自己系统相对应的版本的 yum:
http://ayo.freshrpms.net/
主要功能是更方便的添加/删除/更新RPM包.
它能自动解决包的倚赖性问题.
它能便于管理大量系统的更新问题
2、yum特点
可以同时配置多个资源库(Repository)
简洁的配置文件(/etc/yum.conf、/etc/yum.repo.d/youname.repo)
自动解决增加或删除rpm包时遇到的倚赖性问题
使用方便
保持与RPM数据库的一致性
3、yum安装
CentOS自带(yum-*.noarch.rpm)
#rpm -ivh yum-*.noarch.rpm
在第一次启用yum之前首先需要导入系统的RPM-GPG-KEY:
二、YUM的配置文件
yum的配置信息都储存在一个叫yum.conf的配置文件中,通常位于/etc目 录下,这个是总的yum配置文件。
通常比较灵活方便的用法是自己在/etc/yum.repos.d/目录下新建一个 "自定义名字.repo"的配置文件,删除系统自带的rhel-debuginfo.repo。
/etc/yum.conf配置文件一般不用改动,直接编辑自己的定义的 repo文件
#############################################################
[base]
name=Red Hat Enterprise Linux $releasever -Base
baseurl=http://ftp.monash.edu.au/pub/linux/CentOS/5.3/os/$basearch/
gpgcheck=0
[update]
name=Red Hat Enterprise Linux $releasever -Updates
baseurl=http://ftp.monash.edu.au/pub/linux/CentOS/5.3/updates/$basearch/
gpgcheck=0
[extras]
name=Red Hat Enterprise Linux $releasever -Extras
baseurl=http://ftp.monash.edu.au/pub/linux/CentOS/5.3/extras/$basearch/
gpgcheck=0
[addons]
name=Red Hat Enterprise Linux $releasever -Addons
baseurl=http://ftp.monash.edu.au/pub/linux/CentOS/5.3/addons/$basearch/
gpgcheck=0
############################################################
配置文件的参数解释:
[serverid]
name=Some name for this server
baseurl=url://path/to/repository/
gpgchkeck=1
serverid是用于区别各个不同的repository,必须有一个独一无二的名称。如:[base]、[update]、[extras]、[addons]
name,是对repository的描述,支持像$releasever $basearch这样的变量。
baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。
其中url支持的协议有三种:http:// 、 ftp:// 、file://
baseurl后可以跟多个url 如:
baseurl=http://download.atrpms.net/mirrors/fedoracore/updates/$releasever/$basearch
http://redhat.linux.ee/pub/fedora/linux/core/updates/$releasever/$basearch
gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认是检查的。
exclude=gaim
failovermethod=priority
几个变量
$releasever,发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
$arch,cpu体系,如i686,athlon等
$basearch,cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。
导入GPG-KEY
rpm --import /usr/share/doc/redhat-release-*/RPM-GPG-KEY 官方软件升级用的上。
三、用YUM升级软件
首 先,yum update,
yum会从服务器的header目录下载rpm的header,放在本地的缓存中,header下载完毕,yum会判断是否有可更新的软件包,这时yum开始下载软件包并使用调用rpm安装,这可能要一定时间,取决于要更新软件的数目和网络状况l
升级完毕,以后每天只要使用yum check-update检查一下有无跟新
用yum update packagename 对某个单独包进行升级。
四、实际应用
1、 通过 http://mirror-status.centos.org 站点查找离自己最近的镜像站点
这里我找到离我比较近的 镜像站点是香港的 http://mirror.vpshosting.com.hk/pub/linux/centos/
2、我的实际配置文件/etc/yum.repo.d/my.repo
###############################################################
[base]
name=Red Hat Enterprise Linux $releasever -Base
baseurl=http://mirror.vpshosting.com.hk/pub/linux/centos/5.2/os/$basearch/
gpgcheck=1
[update]
name=Red Hat Enterprise Linux $releasever -Updates
baseurl=http://mirror.vpshosting.com.hk/pub/linux/centos/5.2/updates/$basearch/
gpgcheck=1
[extras]
name=Red Hat Enterprise Linux $releasever -Extras
baseurl=http://mirror.vpshosting.com.hk/pub/linux/centos/5.2/extras/$basearch/
gpgcheck=1
[addons]
name=Red Hat Enterprise Linux $releasever -Addons
baseurl=http://mirror.vpshosting.com.hk/pub/linux/centos/5.2/addons/$basearch/
gpgcheck=1
###############################################################
3、下载并倒入KEY
cd /etc/pki/rpm-gpg
wget http://mirror.vpshosting.com.hk/pub/linux/centos/RPM-GPG-KEY-CentOS-5
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
4、重启yum
service yum-updatesd restart
5、接下来就可以使用yum来安装你要的软件包了
yum install http
你要是急着安装软件,也可以不必更新全部的包,即不用yum update。
FQA:
1、如果报
warning: cannot get exclusive lock on /var/lib/rpm/Packages
使用:fuser /var/lib/rpm/* 看一下谁正在存取 rpm database
五、 yum指令
注:当第一次使用yum或yum资源库有更新时,yum会自动下载所有所需的headers放置于/var/cache/yum目录下,所需时间可能较长.
(1)、rpm包的更新
* 检查可更新的rpm包
#yum check-update
* 更新所有的rpm包
#yum update
* 更新指定的rpm包,如更新kernel和kernel source
#yum update kernel kernel-source
* 大规模的版本升级,与yum update不同的是,连旧的淘汰的包也升级
#yum upgrade
(2)、rpm包的安装和删除
* 安装rpm包,如xmms-mp3
#yum install xmms-mp3
* 删除rpm包,包括与该包有倚赖性的包
#yum remove licq
* 注:同时会提示删除licq-gnome,licq-qt,licq-text
(3)、yum暂存(/var/cache/yum/)的相关参数
* 清除暂存中rpm包文件
#yum clean packages
* 清除暂存中rpm头文件
#yum clearn headers
* 清除暂存中旧的rpm头文件
#yum clean oldheaders
* 清除暂存中旧的rpm头文件和包文件
#yum clearn 或#yum clearn all
* 注:相当于yum clean packages + yum clean oldheaders
(4)、包列表
* 列出资源库中所有可以安装或更新的rpm包
#yum list
* 列出资源库中特定的可以安装或更新以及已经安装的rpm包
#yum list mozilla
#yum list mozilla*
* 注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包
* 列出资源库中所有可以更新的rpm包
#yum list updates
* 列出已经安装的所有的rpm包
#yum list installed
* 列出已经安装的但是不包含在资源库中的rpm包
#yum list extras
* 注:通过其它网站下载安装的rpm包
(5)、rpm包信息显示(info参数同list)
* 列出资源库中所有可以安装或更新的rpm包的信息
#yum info
* 列出资源库中特定的可以安装或更新以及已经安装的rpm包的信息
#yum info mozilla
#yum info mozilla*
* 注:可以在rpm包名中使用匹配符,如列出所有以mozilla开头的rpm包的信息
* 列出资源库中所有可以更新的rpm包的信息
#yum info updates
* 列出已经安装的所有的rpm包的信息
#yum info installed
* 列出已经安装的但是不包含在资源库中的rpm包的信息
#yum info extras
* 注:通过其它网站下载安装的rpm包的信息
(6)、搜索rpm包
* 搜索匹配特定字符的rpm包
#yum search mozilla
* 注:在rpm包名,包描述等中搜索
* 搜索有包含特定文件名的rpm包
#yum provides realplay
(7)、特殊用法,采用yum来下载安装,并不安装。
指定yum的参数--downloaddir,和--downloadonly一并使用,来指定另外的目录来存放下载的包。
#yum install --downloadonly --downloaddir=/tmp vsftpd
####################################################################################################
额外补充:增加自定义资源库
在服务器构建的过程中,我们将要用到的一些工具不存在于CentOS中yum的官方库中,所以需要定义yum的非官方库文件,让一些必需的工具通过yum也能够安装。
# vi /etc/yum.repos.d/dag.repo ← 建立dag.repo,定义非官方库
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
# rpm --import http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt ← 导入非官方库的GPG
例如:增加rpm.livna.org作为资源库
安装Livna.org rpms GPG key
#rpm --import http://rpm.livna.org/RPM-LIVNA-GPG-KEY
#rpm --import http://rpm.livna.org/RPM-LIVNA-GPG-KEY
检查GPG Key
# rpm -qa gpg-pubkey* 显示Key信息
#rpm -qi gpg-pubkey-a109b1ec-3f6e28d5
* (注:如果要删除Key,使用#rpm -e gpg-pubkey-a109b1ec-3f6e28d5)