在centos7中,yum全称“Yellowdog update Modified”,是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。yum基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装。
本教程操作环境:centos7系统、thinkpad t480电脑。
什么是yum
yum是Yellowdog update Modified的简称,是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum的宗旨是自动化的升级、安装/移除rpm安装包(也就是说yum这个命令它的操作对象是RPM包),收集rmp的相关信息,检查依赖性,并提示用户解决。
yum的关键之处是要有可靠的repository,顾名思义这就是软件的仓库,它可以是http或者ftp站点,也可以是本地的软件池,但是必须包含rpm的header,rmp的header包括了rmp的各种信息,包括描述、功能、提供的文件、依赖性等,正是收集了这些信息,才能自动化的完成余下的任务。
yum本身就是运行在linux上的自动管理安装包的系统。yum 的理念是使用一个中心仓库(repository)管理一部分甚至一个distribution 的应用程序相互关系,根据计算出来的软件依赖关系进行相关的升级、安装、删除等等操作,减少了Linux 用户一直头痛的dependencies 的问题。
这一点上,yum 和apt 相同。apt 原为debian 的deb 类型软件管理所使用,但是现在也能用到RedHat 门下的rpm 了。
yum的特点
1.可以同时配置多个资源库(repository)
2.简洁的配置文件(一般配置文件是/etc/yum.conf)
3.自动解决增加或者删除rpm包时遇到的依赖问题
4.保持与rpm的数据库一致
yum的配置文件
yum的配置文件,它的绝对路径一般是:/etc/yum.conf。yum的一切配置信息都存储在这个文件中,这是yum系统中最重要的内容。
yum.conf一般分为main和repository两部分,但是默认情况下只有main部分。每一个yum.conf都只能有一个main部分。repository 部分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repo.d 目录下的各文件中。
使用cat /etc/yum.conf查看该文件的内容。
1.cachedir:此项为yum下载的RPM包的缓存目录,yum在此存储下载的rpm包和数据库
2.keepcache:缓存是否保存,1表示安装后保留软件包,0表示安装后删除软件包
3.debuglevel:出错日志级别,级别为0-10,默认为2(只保留安装和删除记录)
4.logfile:存放系统更新软件的记录,用户可以在该配置项配置的文件中检查自己在过去的日子都做了哪些更新
5.pkgpolicy: 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。
6.distroverp:指定一个软件包,yum会根据这个包判断你的发行版本,默认是RedHat-release,也可以是安装的任何针对自己发行版的rpm包。
7.tolerent:也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。
8.exactarch:有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
9.retries:网络连接发生错误后的重试次数,如果设为0,则会无限重试。
10.obsoletes:这是一个update的参数,具体请参阅yum(
8
),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
11.gpgcheck:是否检查GPG(GNU Private Guard),一种密钥方式签名。
12.plugins:否允许使用插件,默认是
0
不允许,但是我们一般会用yum-fastestmirror这个插件。
13.installonly_limit:允许保留多少个内核包。
14.exclude:屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。
15.reposdir:该选项用户指定 .repo 文件的绝对路径。.repo 文件包含软件仓库的信息 (作用与 /etc/yum.conf 文件中的 [repository] 片段相同)。 reposdir=[包含 .repo 文件的目录的绝对路径]
16.bugtracker_url:追踪bug路径
使用:man 5 yum.conf #可获得yum.conf的详解
yum的工作原理
yum的工作模式是C/S架构:
-
Server端(yum仓库):依赖关系库、原文件、校验码文件。
-
Client端:yum客户端程序、配置文件(连接Server路径信息)。
执行yum命令时,会首先从”/etc/yum.repo.d”目录下的众多repo文件中取得软件仓库的地址并下载“元数据”,“元数据”包含注册于该软件仓库内所有软件包的包名及其所需的依赖环境等信息,yum得到这些信息后会和本地以后环境做对比,进而列出确认需要安装哪些包,并在用户确认后开始安装。
“元数据”由位于yum源服务器相关路径的repodata目录下的repomd.xml做索引。
yum系统的工作流程:
-
服务器端:在服务器上面存放了所有的rpm软件包,然后以相关的功能去分析每个rpm文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。
-
客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。
.repo文件
什么是repo文件? repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!
进入/etc/yum.repos.d/目录下,可以看到默认情况下有如下三个文件:
其中CentOS-Base.repo 是yum 网络源的配置文件(一般都是用这个)
CentOS-Debuginfo.repo debug包尤其和内核相关的更新和软件安装
CentOS-Media.repo 这个是使用光盘挂载后调用的文件(我机器上没有)
CentOS-Vault.repo 这个是最近新版本的加入的老版本的yum源配置(没有。。。)
epel.repo:EPEL(Extra Packages for Enterprise Linux)是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS等提供高质量软件包的项目。装上了 EPEL,就像在 Fedora 上一样,可以通过 yum install 软件包名,即可安装很多以前需要编译安装的软件、常用的软件或一些比较流行的软件,比如现在流行的nginx、htop、ncdu、vnstat等等,都可以使用EPEL很方便的安装更新。前可以直接通过执行命令: yum install epel-release 直接进行安装,如果不能安装,参考:
yum命令格式
yum的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package …]是操作的对象。
1.OPTIONS
–nogpgcheck:禁止进行gpg check;
-y: 自动回答为“yes”;
-q: 静默模式,不输出显示信息;
–disablerepo=repoidglob:临时禁用此处指定的repo;
–enablerepo=repoidglob:临时启用此处指定的repo;
–noplugins:禁用所有插件;
2.常用COMMAND
(1)显示仓库列表:repolist
# yum repolist [all|enabled|disabled] [所有|可用的|不可用]
参看:https://blog.csdn.net/xmm1981/article/details/78258176
推荐:《centos使用教程》