二、yum配置
yum的一切配置信息都储存在一个叫yum.conf的配置文件中,通常位于/etc目录下,这是整个yum系统的重中之重,所以有必要详细介绍。
下面是centos5.2的yum配置文件,以此为例,进行说明:
1、几个变量
$releasever,发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
$arch,cpu体系,如i686,athlon等
$basearch,cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。
2、/etc/yum.conf(这是yum的全局性设置,默认一般不必改动)
[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
#installonly_limit = 3
说明:
cachedir yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum
keepcache 缓存是否保存,1保存,0不保存。
debuglevel 除错级别,0──10,默认是2
logfile yum的日志文件,默认是/var/log/yum.log。
distroverpkg 指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。
exactarch 有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用i686的包来升级。
tolerent 有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。
obsoletes 这是一个update的参数,简单的说就是相当于upgrade,允许更新陈旧的rpm包。
gpgchkeck 有1和0两个选择,分别代表是否是否进行gpg校验。
plugins 是否允许使用插件,0不允许,1允许。但是我们一般会用yum-fastestmirror这个插件。
installonly_limit 允许保留多少个内核包。
除了上述之外,还有一些可以添加的选项,如:
pkgpolicy 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。
retries 网络连接发生错误后的重试次数,如果设为0,则会无限重试。
exclude 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
3、/etc/yum.repos.d/centos-base.repo
[base]
name=centos-$releasever - base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/rpm-gpg-key-centos-5
#released updates
[updates]
name=centos-$releasever - updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/rpm-gpg-key-centos-5
#packages used/produced in the build but not released
[addons]
name=centos-$releasever - addons
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/rpm-gpg-key-centos-5
#additional packages that may be useful
[extras]
name=centos-$releasever - extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/rpm-gpg-key-centos-5
#additional packages that extend functionality of existing packages
[centosplus]
name=centos-$releasever - plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/rpm-gpg-key-centos-5
说明:
所有服务设置都应该遵循如下格式:
[serverid] 用于区别各个不同的repository,必须有一个独一无二的名称
name 对repository的描述,支持像$releasever $basearch这样的变量
mirrorlist 根据网上提供的镜像站点列表,寻找合适的repository,和baseurl两者仅用一个选项即可
#baseurl 当mirrorlist注释掉后,这个选项就是服务设置中最重要的部分,只有设置正确,才能从上面获取软件
…… 其他设置
其中baseurl的格式是:
baseurl=url://server1/path/to/repository/
url://server2/path/to/repository/
url://server3/path/to/repository/
file:///media/cdrom/
ftp://centos:
[email protected]/
其中url支持的协议有 http:// ftp:// file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl只能有一个。
其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。
url之后可以加上多个选项,如gpgcheck、exclude、failovermethod、enabled等
其中gpgcheck,exclude的含义和[main]部分相同,但只对此服务起作用,
failovermethode 有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失 败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。
4、/etc/yum.repos.d/centos-media.repo(扩展功能配置)
[c5-media]
name=centos-$releasever - media
baseurl=file:///media/centos/
file:///media/cdrom/
file:///media/cdrecorder/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/rpm-gpg-key-centos-5
说明:
[c5-media] 服务id
name 描述
baseurl repository在本地的地址
gpgcheck 有1和0两个选择,分别代表是否是否进行gpg校验
enabled
gpgkey key地址
使用dvd或iso文件来使用yum,使用时先使用mount -o loop /root/centos.iso /mnt/cdrom或mount /root/centos.iso /mnt/cdrom挂载光盘,然后在使用yum时,如果使用“网络镜像+本地dvd”则加参数--enablerepo=c5-media即可,如yum --enablerepo=c5-media install xxx,如果仅使用本地dvd则使用参数--disablerepo=\* --enablerepo=c5-media,如:yum --disablerepo=\* --enablerepo=c5-media install xxx
万事具备,只欠东风。还有一件事没有做。那就是导入每个reposity的gpg key,前面说过,yum可以使用gpg对包进行校验,确保下载包的完整性,所以我们先要到各个repository站点找到gpg key,一般都会放在首页的醒目位置,一些名字诸如 rpm-gpg-key.txt之类的纯文本文件,把它们下载,然后用rpm --import xxx.txt命令将它们导入,最好把发行版自带gpg-key也导入,rpm --import /usr/share/doc/redhat-release-*/rpm-gpg-key 官方软件升级用的上。如:fc4: rpm --import /usr/share/doc/fedora-release-4/rpm-gpg-key-fedora
至此一切准备工作都已完毕。
对yum.conf设定完成,我们就可以好好体验yum带来的方便了。
三、yum使用
yum 的基本操作包括软件的安装(本地,网络),升级(本地,网络),卸载,另外还有一定的查询功能。
1、安装
yum会查询数据库,有无这一软件包,如果有,则检查其依赖冲突关系,如果没有依赖冲突,那么最好,下载安装;如果有,则会给出提示,询问是否要同时安装依赖,或删除冲突的包,你可以自己作出判断。设定好了本地的 yum 之后,就可以很方便的进行安装(现在假设就用 fc5 自带的 yum 进行安装),如我们需要安装虚拟机 bochs,可以使用# yum install bochs;如果本地有相关的 rpm 文件,可以用# yum localinstall ur.rpm。前者导致 yum 搜索现有 repository 中的数据(一般先会连接到这些 repository 下载更新数据),如果发现有此软件,则会通过分析其 dependencies 然后下载并安装所需软件。
常用命令:
yum install xxx 安装指定的软件
2、卸载
卸载同安装一样,yum也会查询数据库,给出解决依赖关系的提示。卸载也会消解对应的 dependencies。yum 会把下载的软件包和header存储在cache中,而不会自动删除。如果我们觉得它们占用了磁盘空间,可以使用yum clean指令进行清除。
常用命令:
yum remove xxx 卸载指定的软件
yum eraser xxx 卸载指定的软件
yum clean all 清除所有缓存文件(/var/cache/yum)
yum clean packages 将相关的 rpm 文件删除
yum clean headers 清除header
yum clean oldheaders 清除旧的headers
3、更新
用yum升级软件,yum update,这一步是必须的,yum会从服务器的header目录下载rpm的header,放在本地的缓存中,这可能会花费一定的时间。header下载完毕,yum会判断是否有可更新的软件包,如果有,它会询问你的意见,是否更新,输入y,把系统始终up to date总是不错的,这时yum开始下载软件包并使用调用rpm安装,这可能要一定时间,取决于要更新软件的数目和网络状况,万一网络断了,也没关系,再进行一次就可以了。升级完毕,以后每天只要使用yum check-update检查一下有无跟新,如果有,就用yum update进行跟新,时刻保持系统为最新,堵住一切发现的漏洞。
更新某个软件可以用# yum update firefox。如果不带后面的程序名,将会升级所有可以升级的软件。过时的软件如果需要处理(如删掉)可以添加 --obsolete 参数,或者使用 upgrade。如果需要更自动化一些的操作(避免回答一些问题)还可以增加一些参数,如# yum -y upgrade。
常用命令:
yum check-update 列出所有可更新的软件清单
yum update 更新所有软件
yum update xxx 更新指定的软件
yum upgrade 更换废弃的包,但现在通常用来进行重大的升级,如系统升级
4、查询
想要安装一个软件,只知道它和某方面有关,但又不能确切知道它的名字,这时yum的查询功能就起作用了。你可以用 yum search keyword这样的命令来进行搜索,yum会搜索所有可用rpm的描述,列出所有描述中和keyword有关的rpm包,以使我们从中选择。
常用命令:
yum list 列出所有可安装的软件包
yum list xxx 列出xxx相关的信息
yum list updates 列出所有可更新的软件包
yum list installed 列出所有已安装的软件包
yum list extras 列出所有已安装但不在 yum repository �鹊娜砑�包
yum list info 给出详细的说明
yum info 列出所有软件包的信息
yum info xxx 获取xxx信息
yum info updates 列出所有可更新的软件包信息
yum info installed 列出所有已安�b的软件包信息
yum info extras 列出所有已安�b但不在 yum repository �鹊娜砑�包信息
yum search rpm 获得一切能找到的与 rpm 相关的程序,搜索的对象是每个程序的描述部分
yum provides /bin/rpm 查看什么rpm提供某个程序
5、package group操作
yum grouplist
yum groupinstall
yum groupupdate
yum groupinfo
yum groupremove