自学Linux Shell9.3-基于Red Hat系统工具包:RPM属性依赖的解决方式-YUM在线升级
9.3-基于Red Hat系统工具包:RPM属性依赖的解决方式-YUM在线升级
本节主要介绍基于Red Had的系统(测试系统centos)
yum特点
- 自动解决包的倚赖性问题能更方便的添加/删除/更新RPM包
- 便于管理大量系统的更新问题
- 可以同时配置多个资源库(Repository)
- 简洁的配置文件(/etc/yum.conf)
- 保持与RPM数据库的一致性
- 有一个比较详细的log,可以查看何时升级安装了什么软件包等
- 使用方便
yum是CentOS/Fedora系统自带的,因此它能使用CentOS官方的软件源,完成各种官方发布的各种升级。对于第三方软件源的支持,yum也不差,大多数支持apt的repository,也能支持yum 。
1、yum的安装查看
yum主要功能是更方便的添加/删除/更新RPM包,自动解决包的倚赖性问题,便于管理大量系统的更新问题。
yum可以同时配置多个资源库(Repository),简洁的配置文件(/etc/yum.conf),自动解决增加或删除rpm包时遇到的依赖性问题,保持与RPM数据库的一致性。
1.1 查看系统默认安装的yum
yum的基础安装包包括:
- yum //RPMinstaller/updater
- yum-fastestmirror //Yumplugin which chooses fastest repository from a mirrorlist
- yum-metadata-parser //Afast metadata parser for yum
1.2 yum仓库
yum 是linux环境安装软件包的一种方式。很多时候安装一个软件安装一个软件需要安装1个或者多个其他软件。
yum仓库用来存放所有的现有的.rpm包,当使用yum安装一个rpm包时,需要依赖关系,会自动在仓库中查找依赖软件并安装。仓库可以是本地的,也可以是HTTP、FTP、nfs形式使用的集中地、统一的网络仓库 。
如果你的linux环境不能访问外网,那你装yum没有意义,因为他需要访问http的仓库里面的。当然如果你有本地仓库,就把/etc/yum.repos.d改一下地址就可以。
1.3 安装yum
可以通过wget从网上下载相关包安装,也可以挂载系统安装光盘进行安装。
2、yum命令
命令 | 功能 |
---|---|
yum check-update | 检查可更新的所有软件包 |
yum update | 下载更新系统已安装的所有软件包 |
yum upgrade | 大规模的版本升级,与yum update不同的是,连旧的淘汰的包也升级 |
yum install <packages> | 安装新软件包 |
yum update <packages> | 更新指定的软件包 |
yum remove <packages> | 卸载指定的软件包 |
yum groupinstall <groupnames> | 安装指定软件组中的软件包 |
yum groupupdate <groupnames> | 更新指定软件组中的软件包 |
yum groupremove <groupnames> | 卸载指定软件组中的软件包 |
yum grouplist | 查看系统中已经安装的和可用的软件组 |
yum list | 列出资源库中所有可以安装或更新以及已经安装的rpm包 |
yum list <regex> | 列出资源库中与正则表达式匹配的可以安装或更新以及已经安装的rpm包 |
yum list available | 列出资源库中所有可以安装的rpm包 |
yum list available <regex> | 列出资源库中与正则表达式匹配的所有可以安装的rpm包 |
yum list updates | 列出资源库中所有可以更新的rpm包 |
yum list updates <regex> | 列出资源库中与正则表达式匹配的所有可以更新的rpm包 |
yum list installed | 列出资源库中所有已经安装的rpm包 |
yum list installed <regex> | 列出资源库中与正则表达式匹配的所有已经安装的rpm包 |
yum list extras | 列出已经安装的但是不包含在资源库中的rpm包 |
yum list extras <regex> | 列出与正则表达式匹配的已经安装的但是不包含在资源库中的rpm包 |
yum list recent | 列出最近被添加到资源库中的软件包 |
yum search <regex> | 检测所有可用的软件的名称、描述、概述和已列出的维护者,查找与正则表达式匹配的值 |
yum provides <regex> | 检测软件包中包含的文件以及软件提供的功能,查找与正则表达式匹配的值 |
yum clean headers | 清除缓存中的rpm头文件 |
yum clean packages | 清除缓存中rpm包文件 |
yum clean all | 清除缓存中的rpm头文件和包文件 |
yum deplist <packages> | 显示软件包的依赖信息 |
3、yum配置
3.1 说明:yum的配置文件分为两部分:main和repository
- main部分定义了全局配置选项,整个yum配置文件应该只有一个main。常位于/etc/yum.conf中。
- repository部分定义了每个源/服务器的具体配置,可以有一到多个。常位于/etc/yum.repos.d目录下的各文件中。
repos文件是Linux中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!
YUM的工作原理并不复杂,每一个RPM软件的头(header)里面都会纪录该软件的依赖关系,那么如果可以将该头的内容纪录下来并且进行分析,可以知道每个软件在安装之前需要额外安装哪些基础软件。也就是说,在服务器上面先以分析工具将所有的RPM档案进行分析,然后将该分析纪录下来,只要在进行安装或升级时先查询该纪录的文件,就可以知道所有相关联的软件。所以
YUM的基本工作流程如下:
- 服务器端:在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。
- 客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。
3.2 yum.conf文件详解
- cachedir=/var/cache/yum/$basearch/$releasever
#cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum/$basearch/$releasever。 - keepcache=0
#设置keepcache=1,yum在成功安装软件包之后保留缓存的头文件(headers)和软件包。默认值为keepcache=0不保存 - debuglevel=2
#debuglevel:除错级别,0──10,缺省为2 - logfile=/var/log/yum.log
#yum日志文件位置。用户可以到/var/log/yum.log文件去查询过去所做的更新。 - exactarch=1
#exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设置为1,则yum只会安装和系统架构匹配的软件包,例如,yum不会将i686的软件包安装在适合i386的系统中。默认为1 - obsoletes=1
#相当于upgrade,允许更新陈旧的RPM包 - gpgcheck=1
#gpgchkeck=有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认是检查的 - plugins=1
#是否启用插件,默认1为允许,0表示不允许。我们一般会用yum-fastestmirror这个插件。 - installonly_limit=5
- bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
- pkgpolicy=newest
#pkgpolicy:包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个服务器上的软件安装。一般都是选newest。 - tolerant=1
#tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。 - retries=20
#retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试 - reposdir=/etc/yy.rm
#默认是/etc/yum.repos.d/低下的xx.repo后缀文件 #reposdir=[包含.repo文件的目录的绝对路径]该选项用户指定.repo文件的绝对路径。
.repo文件包含软件仓库的信息(作用与/etc/yum.conf文件中的[repository]片段相同)。|
默认都会被include进来 也就是说/etc/yum.repos.d/xx.repo无论配置文件有多少个每个里面有多少个[name]最后其实都被整合到一个里面看就是了 重复的[name]后面的覆盖前面的 - exclude=xxx
#exclude排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁时特别有用。 - distroverpkg=centos-release
#指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。
3.3 yum.repos.d文件详解
在.repo文件中,配置语法是分段的,每一段配置一个软件仓库,配置语法如下:
[repositoryid]
name=Some name for this repository
baseurl=url://server1/path/to/repository/
url://server2/path/to/repository/
url://server3/path/to/repository/
mirrorlist=url://path/to/mirrorlist/repository/
enabled=0/1
gpgcheck=0/1
gpgkey=A URL pointing to the ASCII-armoured GPG key file for the repository
- repositoryid : 用于指定一个仓库
- name: 用于指定易读的仓库名称,是对repository的描述,支持像$releasever $basearch这样的变量。
在name baseurl中经常使用如下的变量:
- $releasever — 当前系统的版本号
- $arch,cpu体系,如i686,athlon等
- $basearch,cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。
baseurl : 用于指定本仓库的URL, #从服务器获取软件的路径,只有设置正确,才能从上面获取软件。
基本格式是:
baseurl=url://server1/path/to/repository/
url://server2/path/to/repository/
url://server3/path/to/repository/
baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl只能有一个,其中url指向的目录必须是这个repositoryheader目录的上一级,它也支持$releasever$basearch这样的变量。其中url支持的协议有http://ftp://file://三种:- http — 用于指定远程 HTTP 协议的源
- ftp — 用于指定远程 FTP 协议的源
- file — 用于本地镜像或 NFS 挂装文件系统
- mirrorlist : 用于指定仓库的镜像站点,通常是开启的,将$releasever和$basearch替换成自己对应的版本和架构,例如i386,在浏览器中打开,就能看到一长串镜可用的镜像服务器地址列表。
- enabled : 用于指定是否使用本仓库,默认值为1,即可用
- gpgcheck : 用于指定是否检查软件包的 GPG 签名
- gpgkey : 用于指定GPG签名文件的URL
#导入每个reposity的GPGkey,yum可以使用gpg对包进行校验,确保下载包的完整性,所以我们先要到各个repository站点找到gpgkey,一般都会放在首页的醒目位置,一些名字诸如RPM-GPG-KEY.txt之类的纯文本文件,把它们下载,然后用rpm--import xxx.txt命令将它们导入,最好把发行版自带GPG-KEY也导入,rpm--import /usr/share/doc/redhat-release-*/RPM-GPG-KEY 官方软件升级用的上。
3.3.1 设置网络更新源
下面是一个CentOS-Base.repo文件的实例,在此文件中没有设置mirrorlist ,使用baseurl只指定了一个URL。
[base]
name=CentOS-$releasever - Base
baseurl=http://centos.candishosting.com.cn/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[updates]
name=CentOS-$releasever - Updates
baseurl=http://centos.candishosting.com.cn/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[addons]
name=CentOS-$releasever - Addons
baseurl=http://centos.candishosting.com.cn/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[extras]
name=CentOS-$releasever - Extras
baseurl=http://centos.candishosting.com.cn/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://centos.candishosting.com.cn/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
3.3.2 设置本地更新源
为了使用安装光盘作为更新源,可以修改CentOS-Media.repo 文件,下面是一个配置实例。
[c5-media]
name=CentOS-$releasever - Media
baseurl=file:///media/CentOS/
file:///media/cdrom/
file:///media/cdrecorder/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-beta
- 为了使用 c5-media仓库,需将CentO S-Base .repo文件中的base仓库使用enabled=0设置成不可用。
- 若本地磁盘空间有足够空间,您也可以将安装光盘复制到本地磁盘的一个目录中
4、yum举例
4.1 设置yum本地源:
[root@localhost /]# vim /etc/yum.repos.d/local.repo # 配置yum本地源
[local #]
name = local yum
baseurl = file://mnt #设置本地源文件
gpgcheck=0
enabled=1
测试:
使用rpm安装的时候,会提示依懒性关系,需要依序一步一步才能安装。
使用yum安装的时候,直接安装完成。
为什么rpm在路径/mnt/Packages下就不能自行处理依懒性关系, 而yum在路径/mnt/ 就可以的呢?
原因是因为yum先读取配置文件里的信息 baseurl = file://mnt 查找本地源,
重点还要查找一个依懒性文件(早已写好依赖性关系)repodata, 找到需要的所有的安装包文件
.....
自学Linux Shell9.3-基于Red Hat系统工具包:RPM属性依赖的解决方式-YUM在线升级的更多相关文章
- 自学Linux Shell9.2-基于Red Hat系统工具包存在两种方式之一:RPM包
点击返回 自学Linux命令行与Shell脚本之路 9.2-基于Red Hat系统工具包存在两种方式之一:RPM包 本节主要介绍基于Red Had的系统(测试系统centos) 1. 工具包存在两种方 ...
- 自学Linux Shell9.4-基于Red Hat系统工具包存在两种方式之二:源码包
点击返回 自学Linux命令行与Shell脚本之路 9.4-基于Red Hat系统工具包存在两种方式之二:源码包 本节主要介绍基于Red Had的系统(测试系统centos) 1. 工具包存在两种方式 ...
- Linux:Red Hat系统的安装
今天高兴,所以我写这一期,这一期写的是Red Hat系统的安装,这个开发系统也是红帽企业制作出来的,关于这款系统的相关资料就自行百度吧!话不多说,直接进入这期的内容吧! 安装Red Hat系统 系统下 ...
- 自学Linux Shell9.1-安装软件程序
点击返回 自学Linux命令行与Shell脚本之路 9.1-linux安装软件程序 PMS利用一个数据库来记录各种相关内容: Linux系统安装了什么软件包 每个包安装什么文件 每个已安装软件包的版本 ...
- 小白安装linux(虚拟机)red hat enterprise linux 6
额,这篇貌似是我名义上的第一篇博客,但是我好像没有第一写他,没事,都一样.(我会假装它是人生中第一篇博客的) 上大学之后,很久之后才发现自己听喜欢linux的,因为感觉很高大上,所以自己自学了很多关于 ...
- Linux 命令大全之Red Hat 7常用命令总结二
Linux 命令大全之RedHat7常用命令笔记... ----------------------------------------------------- 征服Linux从终端开始 ----- ...
- Linux和云供应商Red Hat被IBM以34亿美元的价格收购
导读 今天的主题包括IBM以340亿美元收购Red Hat,人性化是使人工智能成功的关键.两家公司于10月28日宣布,IBM正以340亿美元的价格收购Linux和云技术供应商Red Hat,以期改变云 ...
- Red Hat系统下安装gcc
这篇是在客户服务器上安装redis碰到的问题.服务器是RedHat,无法直接安装gcc,导致Redis无法安装的解决办法: 1.make redis时候报下面这样的错,原因就是gcc没有安装. ...
- 为Azure-云准备一个基于Red Hat 8.x 的虚拟机镜像
由于公司最近要求部分项目上线到Azure云上,要求操作系统使用的Redhat 8.x,而且必须加固 而在Azure官网提供的镜像中,又没有Redhat,于是只有自己自定义Redhat镜像,最后加固,作 ...
随机推荐
- linux shell的here document用法
转载自: http://my.oschina.net/u/1032146/blog/146941 什么是Here Document?Here Document 是在Linux Shell 中的一种特殊 ...
- [Spark][Python]PageRank 程序
PageRank 程序: file contents: page1 page3page2 page1page4 page1page3 page1page4 page2page3 page4 def c ...
- RHEL7基本命令
Terminal TTY TTY是TeleTYpe的一个老缩写. Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,和古老 ...
- Intel x86_64 Architecture Background 2
这里是在学习Intel x86_64体系架构时学习到的一些概念,记录下来以供日后参考.如果有错的地方,欢迎指正! CPU上下文切换(context switch): 这个概念第一次听到对我来说是完全陌 ...
- Nginx---应用场景小结
Nginx介绍 Nginx一是一款轻量级的.高性能的HTTP.反向代理服务器,具有很高的稳定性.支持热部署.模块扩展也非常容易.Nginx采取了分阶段资源分配技术,处理静态文件和无缓存的反向代理加 ...
- Promise 原理
异步:可同时好几件事,互不影响: 同步:按循序一件一件.... 异步好多缺点:.... promise就是解决异步计算的这些缺点的,主要用于: 1.异步计算: 2.可以将异步操作队列化 按期望的顺序 ...
- 2-Twenty Fifth Scrum Meeting-20151231
前言 因为服务器关闭,我们的开发项目也遭遇停滞一个星期.与网站开发负责人员协商之后,29号开放服务器.我们的项目也能够继续下去.比规定的开发时间(截止为2015/12/29)推迟. 事项安排 1.开发 ...
- Daily Scrumming* 2015.12.22(Day 14)
一.团队scrum meeting照片 二.成员工作总结 姓名 任务ID 迁入记录 江昊 任务1112 无 任务说明 今天没有写前端界面,而是完成了跨域请求的实现以及用户实名认证API 前后端大部分数 ...
- 微信开发-charles抓包
在微信开发过程中有一块不能使用开发者工具进行调试,需要查看请求的返回,故使用了charles抓包工具. 环境配置 1.http://www.charlesproxy.com/getssl/ 下载cha ...
- 个人实验 github地址:https://github.com/quchengyu/cher
一.实践目的 1.掌握类的定义,对象的创建. 2.掌握实现封装.继承.多态的方法,掌握各种修饰符的使用. 3.掌握将对象数组作为方法的参数和返回值. 4.掌握抽象类与接口的概念及实现,理解动态绑定机制 ...