程序包管理前端工具yum的使用详解
2017-04-02 12:53
519 查看
前言:
what?什么是yumwhy?为什么需要yum
how to work?yum的工作原理如何实现
how to use?怎么在Linux中使用yum命令
1. yum概述
在上一篇博客上,我详细的介绍了程序管理工具rpm,它很大程度上简化了安装程序的流程,但它也存在一个缺陷:不能解决程序包的依赖问题。而yum的诞生就是为了弥补这个不足。yum不能说是一款全新的程序包管理工具,它只是rpm的前端管理工具。之所以这么说,是因为yum的安装、升级、卸载、查询等操作,都要依靠rpm来完成。要想使用yum,系统上必须安装rpm,yum程序包是依赖于rpm程序包的。yum是一款基于rpm包管理器的前端程序包管理器,全称为Yellow dog Update Modifier。它可以从指定服务器上自动下载程序包,并自动分析程序包的元数据、自动处理程序包之间的依赖关系,能一次性安装完所有依赖的包,而无须繁琐地一次次安装所有依赖包。
2. yum的工作原理
yum是基于C-S(客户端-服务器)模式的,用户从服务器上下载程序包进行安装。为此,我们需要在服务器上构建一个存储rpm包的仓库,用于存储rpm包,并接受来自客户端的访问。为了方便客户端一次性获取全部rpm包详细信息,以分析依赖关系,服务器端将仓库中所有rpm包的详细信息(包括依赖关系信息)提取出来,做成仓库的元数据文件。这样依赖,客户端只需获取元数据文件,便能得到整个仓库中rpm包的信息,以进行依赖关系分析。第一次使用yum时的的工作方式如下所示:
第一步:获取yum仓库元数据文件,并缓存在本地的/var/cache/yum目录下。
第二步:在元数据文件中查找用户选择要安装的程序包,根据元数据文件在本地分析要安装的程序包的依赖关系,结合当前系统上已安装的程序包,列出需要但未安装的程序包清单。
第三步:将需要下载的程序包清单发送给yum仓库。
第四步:下载各程序包缓存至本地,并安装。
第五步:程序包安装结束后,缓存的程序包文件将被删除,但缓存的仓库元数据文件将被保留,用于下次安装时使用。
保留yum仓库元数据文件,能够节省带宽,但同时也带来一个问题:yum仓库如果进行了更新,它的元数据文件也会发生变化,这样以来客户端的元数据文件和服务器的元数据文件就不一致了。为了解决者两个文件的一致性问题,便需要用到元数据文件的校验码了。我们可以在yum仓库中为元数据文件生成一个校验码,客户端从服务器请求元数据文件校验码,与缓存中的元数据文件进行比对,相同则缓存与服务器元数据文件一致,可以使用,不同则不一致,需要重新下载元数据文件。
后续使用yum安装程序包的流程:
第一步:获取yum仓库校验码文件。
第二步:核对校验码,相同则使用缓存的元数据文件,不同则重新下载元数据文件。
第三步:之后的步骤与上面介绍的首次使用yum相同。
3. yum相关的配置文件
yum相关的主要配置文件包括/etc/yum.conf文件和/etc/yum.repo目录下的以“.repo”结尾的文件。其中/etc/yum.conf为主配置文件,它配置了yum的一些公共的配置信息,/etc/yum.repo目录下的配置文件用于定义各个yum仓库各自的信息。多个yum仓库的信息可以配置在一个同一配置文件中,或分别配置在多个文件中,这并不会影响使用。通常,为了管理的方便,将不同的仓库用多个文件进行配置。有时候,多个网站上有相同的yum仓库源,我们可以将它们的URL写在配置文件中的同一个仓库中,系统将随机或依照特定规则使用某一链接。3.1 主配置文件/etc/yum.conf内容详解:
可使用man yum.conf获取配置文件的帮助文档。
[main] cachedir=/var/cache/yum/$basearch/$releasever #设置缓存目录 keepcache=0 #安装后是否保留缓存 debuglevel=2 #调试消息输出等级 logfile=/var/log/yum.log #日志文件路径 exactarch=1 #是否做精确平台匹配 obsoletes=1 gpgcheck=1 #是否检查来源合法性和包完整性 plugins=1 #是否支持插件机制 installonly_limit=5 #最多同时安装多少个程序包 bugtracker_url=http://bugs.centos.org/set_project.php? project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum #bug追踪URL distroverpkg=centos-release #发行版版本
3.2 子配置文件/etc/yum.repo/*.repo内容详解
[repositoryID] #仓库名 name=Some name for this repository #对repo作功能性说明; baseurl=url://path/to/repository/ #仓库指向的路径,可指向多个路径; enabled={1|0} #是否启用该仓库,默认为1(启用); gpgcheck={1|0} #是否要对程序包数据的来源合法性和数据完整性做校验; gpgkey=URL #指定GPG密钥文件的访问路径,可由仓库提供; enablegroups={1|0} #是否允许以组的方式管理仓库; failovermethod={roundrobin|priority} #当baseurl同时指向多个仓库路径时,可指定以什么方式选择url去访问仓库,以及当某一路径访问 失败时,可指定如何再选择路径;roundrobin是随机挑选路径访问,priority是自上而下选择路径访 问;默认为roundrobin; cost= #开销;开销越小,该仓库url更优;默认为1000。
其中的URL链接支持http;//、ftp://、file:///、nfs://
配置文件中允许使用变量:
$releasever: 当前OS的发行版的主版本号;
$arch: 平台;
$basearch:基础平台;
$YUM0-$YUM9:十个可自定义的变量;
变量的使用示例:
http://mirrors.magedu.com/centos/$releasever/$basearch/os
示例:定义一个本地的仓库
[local] name=this is a local repo. baseurl=file:///media/cdrom gpgcheck=0 enabled=1
4. yum命令的用法
显示仓库列表
子命令:repolistyum repolist [all|enabled|disabled] #可显示启用的和未启用的仓库,默认显示启用的仓库
显示程序包
子命令:listyum list [all | glob_exp1] [glob_exp2] [...] yum list {available|installed|updates} [glob_exp1] [...]
安装程序包
子命令:installyum install package1 [p bbb0 ackage2] [...]
重新安装
子命令:reinstallyum reinstall package1 [package2] [...]
升级程序包
子命令:updateyum update [package1] [package2] [...]
降级程序包
子命令:downgradeyum downgrade package1 [package2] [...]
检查可用升级
子命令:check-updateyum check-update
卸载程序包
子命令:remove、eraseyum remove | erase package1 [package2] [...]
查看程序包information
子命令:infoyum info package1 [package2] [...]
查看指定的特性(可以是某文件)是由哪个程序包提供的
子命令:provides、whatprovidesyum provides | whatprovides feature1 [feature2] [...]
清理缓存
子命令:cleanyum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存
子命令:makecacheyum makecache
搜索
子命令:search以指定的关键字搜索程序包名及summary信息
yum search string1 [string2] [...]
查看指定包所依赖的capabilities
子命令:deplistyum deplist package1 [package2] [...]
查看yum事务历史
子命令:historyyum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
安装及升级本地的程序包
子命令:localinstall、localupdateyum localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) yum localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update)
包组管理的相关命令
子命令:groupinstall、groupupdate、grouplist、groupremove、groupinfoyum groupinstall group1 [group2] [...] yum groupupdate group1 [group2] [...] yum grouplist [hidden] [groupwildcard] [...] yum groupremove group1 [group2] [...] yum groupinfo group1 [...]
yum的命令行选项
–nogpgckeck:禁止进行gpg check;–y:自行回答为”yes”;
–q:静默模式;
–disablerepo=repoidglob:临时禁用此处指定的repo;
–enablerepo=repoidglob:临时启用此处指定的repo;
–noplugins:禁用所有插件;
如何使用光盘当做本地yum仓库
(1)挂载光盘至某目录,例如/media/cdrom:mount -r -t iso9660 /dev/cdrom /media/cdrom
(2)创建配置文件:
[CentOS 7] name=this is a local repo. baseurl=file:///media/cdrom gpgcheck=0 enabled=1
创建yum仓库
使用命令:createrepo [options] directory将程序包复制至指定的directory目录下,使用createrepo命令便能创建yum仓库,并在directory目录下生成一个repodate目录,里面存放着此yum仓库的元数据文件。至此仓库创建成功。
相关文章推荐
- 程序包管理的前端工具yum、程序包管理器编译安装、sed命令、find文件查找
- linux 程序包管理工具yum使用
- yum前端管理工具详解
- linux程序包管理之rpm程序包管理器与yum前端工具
- Linux程序包管理,YUM命令使用解析。
- 软件包管理之前端管理工具yum 推荐
- 使用yum查看工具lspci所在包并安装的方法(详解)
- RPM(RPM Package Manager)程序包管理工具的常见使用方法
- Linux(CentOS6.x)下使用yum软件管理工具安装LNMP(Nginx+PHP+Mysql)环境并配置虚拟主机vhost
- CentOS7下使用rmcli配置IP地址详解及网络连接状态查看工具和进程管理工具的使用
- centos6.5环境openldap实战之ldap配置详解及web管理工具lam(ldap-account-manager)使用详解
- 详解前端构建工具gulpjs的使用介绍及技巧
- Linux 包管理工具 pip 使用详解
- Linux rpm 命令参数使用详解:RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”
- yum--rpm 前端工具详解
- 如何在linux和windows下使用版本管理工具git 详解
- 初学linux的rpm和前端管理工具yum
- 如何使用yum工具来管理软件包
- Linux下程序包管理rpm、yum及编译安装详解
- linux基础--包管理工具yum详解