Linux命令(008) -- yum
yum命令(全称为Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
一、yum命令详解
# 语法 yum(选项)(参数) # 选项 -h:显示帮助信息; -y:对所有的提问都回答“yes”; -c:指定配置文件; -q:安静模式; -v:详细模式; -d:设置调试等级(0-10); -e:设置错误等级(0-10); -R:设置yum处理一个命令的最大等待时间; -C:完全从缓存中运行,而不去下载或者更新任何头文件。 # 参数 install:安装rpm软件包; update:更新rpm软件包; check-update:检查是否有可用的更新rpm软件包; remove:删除指定的rpm软件包; list:显示软件包的信息; search:检查软件包的信息; info:显示指定的rpm软件包的描述信息和概要信息; clean:清理yum过期的缓存; shell:进入yum的shell提示符; resolvedep:显示rpm软件包的依赖关系; localinstall:安装本地的rpm软件包; localupdate:显示本地rpm软件包进行更新; deplist:显示rpm软件包的所有依赖关系。
示例:
1.安装 yum install # 全部安装 yum install package1 # 安装指定的安装包package1 yum groupinsall group1 # 安装程序组group1 2.更新和升级 yum update # 全部更新 yum update package1 # 更新指定程序包package1 yum check-update # 检查可更新的程序 yum upgrade package1 # 升级指定程序包package1 yum groupupdate group1 # 升级程序组group1 3.查找和显示 yum info package1 # 显示安装包信息package1 yum list # 显示所有已经安装和可以安装的程序包 yum list package1 # 显示指定程序包安装情况package1 yum groupinfo group1 # 显示程序组group1信息 yum search string # 根据关键字string查找安装包 4.删除 yum remove | erase package1 # 删除程序包package1 yum groupremove group1 # 删除程序组group1 yum deplist package1 # 查看程序package1依赖情况 5.清除缓存 yum clean packages # 清除缓存目录下的软件包 yum clean headers # 清除缓存目录下的headers yum clean oldheaders # 清除缓存目录下旧的headers 6.生成缓存 yum clean all yum makecache
二、yum的配置文件
yum 的配置文件分为两部分:main 和repository。
- main部分定义了全局配置选项,整个yum 配置文件应该只有一个main。常位于/etc/yum.conf中。
- repository部分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d目录下的各文件中。
1、yum.conf文件详解
[main] cachedir=/var/cache/yum/$basearch/$releasever # yum 缓存的目录,yum 在此存储下载的rpm 包和数据库,默认设置为/var/cache/yum keepcache=0 # 安装完成后是否保留软件包,0为不保留(默认为0),1为保留 debuglevel=2 # Debug 信息输出等级,范围为0-10,缺省为2 logfile=/var/log/yum.log # yum 日志文件位置。用户可以到/var/log/yum.log 文件去查询过去所做的更新。 exactarch=1 # 有1和0两个选项,设置为1,则yum 只会安装和系统架构匹配的软件包,例如,yum 不会将i686的软件包安装在适合i386的系统中。默认为1。 pkgpolicy=newest # pkgpolicy:包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。 obsoletes=1 # 这是一个update的参数,简单的说就是相当于upgrade,允许更新陈旧的RPM包。 gpgcheck=1 # 有1和0两个选择,分别代表是否是否进行gpg(GNU Private Guard) 校验,以确定rpm 包的来源是有效和安全的。这个选项如果设置在[main]部分,则对每个repository 都有效。默认值为0。 plugins=1 # 是否启用插件,默认1为允许,0表示不允许。我们一般会用yum-fastestmirror这个插件。 installonly_limit=3 # 允许保留多少个内核包 exclude=selinux* # 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开
2、repo文件详解
repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用。在repo文件中可以包含如下内容:
[serverid] # serverid用于区别各个不同的repository,必须有一个独一无二的名称。 name=Some name for this server # name用于对repository的描述,支持像$releasever $basearch这样的变量。 baseurl=url://path/to/repository/ # baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是: # baseurl=url://server1/path/to/repository/ # url://server2/path/to/repository/ # url://server3/path/to/repository/ # 其中url支持的协议有 http://、ftp://、file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl只能有一个,也就是说不能像如下格式: # baseurl=url://server1/path/to/repository/ # baseurl=url://server2/path/to/repository/ # baseurl=url://server3/path/to/repository/ # 其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。 mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch # 指定一个镜像服务器的地址列表。 gpgcheck=1 exclude=selinux* # pgcheck,exclude的含义和[main]部分相同,但只对此服务器起作用。 failovermethod=priority # failovermethode有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。 enabled=1/0 # 当某个软件仓库被配置成enabled=0时,yum在安装或升级软件包时不会将该仓库做为软件包提供源。使用这个选项,可以启用或禁用软件仓库。
示例:163的yum源文件
[base] # name定义了软件仓库的名称,$releasever变量定义了发行版本 name=CentOS-$releasever - Base - 163.com # baseurl定义了软件仓库服务器的地址 baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os # gpgcheck选项表示这个repo中下载的rpm将进行gpg的校验,已确定rpm包的来源是有效和安全的 gpgcheck=1 # gpgkey定义用于校验的gpg密钥 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6