yum是什么
yum是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。yum基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁。yum的关键之处是要有可靠的repository,顾名思义这就是软件的仓库,它可以是http或者ftp站点,也可以是本地的软件池,但是必须包含rpm的header(rmp的header包括了rmp的各种信息,包括描述、功能、提供的文件、依赖性等)正是收集了这些信息,才能自动化的完成余下的任务。
yum的特点
1.可以同时配置多个资源库(repository)
2.简洁的配置文件(一般配置文件是/etc/yum.conf)
3.自动解决增加或者删除rpm包时遇到的依赖问题
4.保持与rpm的数据库一致
yum的工作原理
yum的工作模式是C/S架构:
- Server端(yum仓库):依赖关系库、原文件、校验码文件。
- Client端:yum客户端程序、配置文件(连接Server路径信息)。
执行yum命令时,会首先从/etc/yum.repo.d目录下的众多repo文件中取得软件仓库的地址并下载元数据,“元数据”包含注册于该软件仓库内所有软件包的包名及其所需的依赖环境等信息,yum得到这些信息后会和本地以后环境做对比,进而列出确认需要安装哪些包,并在用户确认后开始安装。
yum的工作流程
在客户端,当YUM接收到用户命令(例如:安装程序包的命令)之后,会向着本地配置文件中配置的服务器地址(URL)发起连接。YUM不会直接向服务器请求程序包,而是请求YUM服务器上存放RPM包名、版本、包和包之间依赖关系的元数据文件。这个文件下载到本地之后,会先存放到cache中,然后YUM会在本地上分析这个文件中是否存有要安装程序包的包名,如果有就根据这个元数据文件尝试分析该包的依赖关系,得出要依赖哪些程序包之后,就在本地已安装的程序包中查询被依赖的包中哪些已安装,哪些没有安装,分析完之后,YUM会启动文件服务器的客户端向着YUM服务器下载那些没有安装的程序包。下载完成后先缓存在本地,在本地开始执行类似于RPM安装的操作;而安装时会先安装被依赖的程序包,所有程序包安装完成后会通知客户端,并自动删除缓存区中的程序包以节省空间;但是元数据不会被删除,因为下次再安装新的程序包时,直接分析本地的元数据就可以获取依赖关系,通过这种方式可以节省时间与网络带宽。
yum的配置文件
- /etc/yum.conf:为所有yum仓库提供公共配置
- /etc/yum.repos.d/*.repo:为仓库的指向提供配置
- /etc/yum.conf是yum的配置文件的绝对路径,yum的一切配置信息都存储在这个文件中。使用cat /etc/yum.conf可以查看该文件的内容:
- cachedir:此项为yum下载的RPM包的缓存目录,yum在此存储下载的rpm包和数据库
- keepcache:缓存是否保存,1表示安装后保留软件包,0表示安装后删除软件包
- debuglevel:出错日志级别,级别为0-10,默认为2(只保留安装和删除记录)
- logfile:存放系统更新软件的记录
- pkgpolicy: 包的策略,选项为newest和last。这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存在时yum应该安装哪一个。如果是newest,则yum会安装最新的那个版本。如果是last,则会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。
- distroverp:指定一个软件包,yum会根据这个包判断发行版本,默认是RedHat-release,也可以是安装的任何针对自己发行版的rpm包。
- tolerent:1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,默认是0。
- exactarch:1和0两个选项,代表是否只升级和你安装软件包cpu体系一致的包。
- retries:网络连接发生错误后的重试次数,如果设为0,则会无限重试。
- obsoletes:这是一个update的参数,允许更新陈旧的RPM包。
- gpgcheck:是否检查GPG(GNU Private Guard),一种密钥方式签名。
- plugins:是否允许使用插件,默认是0不允许。
- installonly_limit:允许保留多少个内核包。
- exclude:屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。
- reposdir:该选项用户指定 .repo 文件的绝对路径。
- bugtracker_url:追踪bug路径
2./etc/yum.repo.d/*.repo是Fedora、Redhat和Centos中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,repo文件中的设置内容将被yum读取和应用。
- name:完整的仓库名称
- baseurl:yum仓库指明的访问路径
- enabled:1和0两个选项,代表是否启用此yum仓库,默认启用
- gpgcheck:1和0两个选项,代表是否检查完整性和来源合法性
- gpgkey:秘钥文件位置
- enablegroups:1和0两个选项,代表是否基于组来批量管理程序包
- Failovermethod:故障转移方法,roundrobin和priority两个选项分别代表轮询和根据优先级选择
- cost:设置开销,默认为1000
yum的命令格式
yum [options] [command] [package]
1.[options]是可选的,包含:
-h |
显示帮助信息 |
-y |
安装过程中出现的所有提示都选择"yes" |
-q |
不显示安装的过程(安静模式) |
-v |
详细模式 |
-c |
指定配置文件 |
--nogpgcheck |
禁止进行gpg check |
--noplugins |
禁用所有插件 |
2.[command]为所要进行的操作
repolist |
显示仓库列表 |
# yum repolist [all|enabled|disabled] [所有|可用的|不可用] |
list |
显示程序包 |
# yum list [all | glob_exp1] [glob_exp2] [...] [所有的|符合glob通配条件的] # yum list {available|installed|updates} [glob_exp1] [...] 可用尚未安装的,已经安装的,可升级的 |
install |
安装程序包 |
# yum install package1 [package2] [...] # yum reinstall package1 [package2] [...] (重新安装) |
remove/erase |
卸载程序包 |
#yum remove | erase package1 [package2] [...] |
update/downgrade |
升级/降级程序包 |
# yum update [package1] [package2] [...] 升级操作 # yum downgrade package1 [package2] [...] 降级操作 |
check-update |
检查可用升级 |
# yum check-update |
info |
查看程序包简要信息 |
# yum info [package1] [package2] [...]
|
provides |
查看指定的特性是由哪个程序包所提供 |
#yum provides | whatprovides feature1 [feature2] [...] |
clean |
清理本地缓存 |
# yum clean <packages | metadata | expire-cache | rpmdb | plugins | all > 包、源数据、过期缓存、rpmdb、插件、所有 |
makecache |
构建缓存 |
# yum makecache |
search |
以指定的关键字搜索程序包名及summary信息 |
# yum search string1 [string2] [...] |
deplist |
查看指定包所依赖的功能 |
# yum deplist package1 [package2] [...] |