yum是Yellowdog update Modified的简称。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 了。
注:linux下的RPM的全称是“RedHat Package Manager”,最早是Red Hat公司开发的,而rpm包则是软件编译完成后按照RPM机制打包起来的一个文件,可以用rpm命令安装的一个软件安装包,它省去了Linux软件安装中编译的步骤,安装成功后软件就可以用了。尽管几乎所有的Linux发行版本都使用这种形式进行软件包的管理安装、更新和卸载软件,但是并不受linux用户喜爱,主要原因就是因为rpm软件包之间的依赖性问题往往会很繁琐,一般用户根本无法解决。
RPM包的特点是:
1.实现已经编译好;
2.安装方便;
3.安装过程中要求环境一致;
4.反安装时要从最上层开始。
RPM包的名称规则示例:
ttpd-manual- 2.0.40-21.i386.rpm,
ttp-manual是软件包的名称,2是主版本号;0是次版本号;40是次版本号;21是编译的次数;i386是适合的平台;.rpm说明这是一个RPM包。
1.可以同时配置多个资源库(repository)
2.简洁的配置文件(一般配置文件是/etc/yum.conf)
3.自动解决增加或者删除rpm包时遇到的依赖问题
4.保持与rpm的数据库一致
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的工作模式是C/S架构:
Server端(yum仓库):依赖关系库、原文件、校验码文件。
Client端:yum客户端程序、配置文件(连接Server路径信息)。
执行yum命令时,会首先从”/etc/yum.repo.d”目录下的众多repo文件中取得软件仓库的地址并下载“元数据”,“元数据”包含注册于该软件仓库内所有软件包的包名及其所需的依赖环境等信息,yum得到这些信息后会和本地以后环境做对比,进而列出确认需要安装哪些包,并在用户确认后开始安装。 “元数据”由位于yum源服务器相关路径的repodata目录下的repomd.xml做索引。
yum系统的工作流程:
yum的基本工作流程如下: 服务器端:在服务器上面存放了所有的rpm软件包,然后以相关的功能去分析每个rpm文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。 客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。
什么是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源配置(没有。。。)
国内yum源的安装(163,阿里云,epel)
----阿里云镜像源
1、备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下载新的CentOS-Base.repo 到/etc/yum.repos.d/
CentOS 5
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
之后运行 yum clean all,yum makecache 生成缓存。
----163镜像源
第一步:备份你的原镜像文件,以免出错后可以恢复。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
第二步:下载新的CentOS-Base.repo 到/etc/yum.repos.d/
CentOS 5
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS5-Base-163.repo
CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
之后运行 yum clean all,yum makecache 生成缓存。
epel.repo:EPEL(Extra Packages for Enterprise Linux)是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS等提供高质量软件包的项目。装上了 EPEL,就像在 Fedora 上一样,可以通过 yum install 软件包名,即可安装很多以前需要编译安装的软件、常用的软件或一些比较流行的软件,比如现在流行的nginx、htop、ncdu、vnstat等等,都可以使用EPEL很方便的安装更新。前可以直接通过执行命令: yum install epel-release 直接进行安装,如果不能安装,则先进行安装epel源:
1、备份(如有配置其他epel源)
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
2、下载新repo 到/etc/yum.repos.d/
epel(RHEL 7)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
epel(RHEL 6)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
epel(RHEL 5)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-5.repo
----官方源直接安装
CentOS/RHEL 5 :
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm
CentOS/RHEL 6 :
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
CentOS/RHEL 7 :
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
补充:
[repositoryID] #仓库ID,唯一标识别,不能重复
name=Some name for this repository # 完整的仓库名称
baseurl=url://path/to/repository/ # yum仓库指明的访问路径
enabled={1|0} #是否启用此yum仓库,默认启用
gpgcheck={1|0} #是否检查完整性和来源合法性
gpgkey=URL #秘钥文件位置,可能是对方仓库提供
enablegroups={1|0} #是否基于组来批量管理程序包
failovermethod={roundrobin|priority} #故障转移方法:轮询、根据优先级选择; 默认roundrobin随机
cost=# #设置开销,默认为1000
说明:
1)*.repo可以将多个[repositoryID]的配置信息放在一个而文件内,也可以切成多个方便管理
2)baseurl可以使用:ftp:// 、http:// 、nfs:// 、file:/// 指明URL路径
3)baseurl等号两边不能有空格,其后可以填写多个镜像访问路径,每行一个,不能顶行写
多个访问路径间联系是镜像相同,目的是为了做备用访问
4)更多选项使用man 5 yum.conf查看,基本配置只需前三行就可以
5)发行版光盘镜像安装可能会自动配置网络镜像URL地址
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] [所有|可用的|不可用]
1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅安装指定的软件命令:yum install <package_name>
4.仅更新指定的软件命令:yum update <package_name>
5.列出所有可安裝的软件清单命令:yum list
6.删除软件包命令:yum remove <package_name>
7.查找软件包 命令:yum search <keyword>
8.清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers