码迷,mamicode.com
首页 > 其他好文 > 详细

你玩游戏吗?软件包的管理(二)——YUM

时间:2015-04-13 07:09:10      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:yum   linux   软件   管理器   

   Yum (Yellow dog Updater, Modified) 由Duke University团队,修改Yellow Dog Linux的Yellow Dog Updater开发而成,是一个基于RPM包管理的字符前端软件包管理器。能够从指定的服务器自动下载 RPM 包并且安装,可以处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。被Yellow Dog Linux本身,以及Fedora、Red Hat Enterprise Linux采用。——维基百科

   我们的“阿黄”上场了,这条dog非常忠诚可靠,而且确实帮助我们干了很多家务活还不制造垃圾。Yum是基于RPM的前段工具,所以它管理的依然是RPM包,不能忘了主人哦。

   Yum利用的是一种C/S结构,它有客户端和服务端两个部分,客户端可以理解为yum命令本身,而服务端上就是我们的软件包仓库以及“元数据”。这个“元数据”类似于我们的“花名册”,记录了仓库的信息、特征码以及仓库里都有哪些“货”。当阿黄第一次来取货时,它会缓存在自己的窝里一份元数据这个花名册,然后在花名册中找自己想要的骨头,找到以后缓存到家里一份,吃完以后就删掉了,下次再去取骨头时,阿黄会对比一下自己的花名册和服务器的是否一致,不一致的话就更新一下,然后取骨头走人。这就是Yum的基本工作流程,当然它可以自动给我们解决软件包的依赖问题。

   我们知道了阿黄的工作方式那么就来先建立一个仓库吧,要不它去哪里找骨头呢。如果你连阿黄都没有那么只能先用rpm装一个了,这里就不演示了。要找到仓库我们得先有一张地图,这就是yum的配置文件:

技术分享

 我们来解释一下都是什么意思:

## [main]

## cachedir=/var/cache/yum/$basearch/$releasever

## keepcache=0 --> 是否保持包缓存

## debuglevel=2 --> 调试级别,显示安装时的详细信息级别

## logfile=/var/log/yum.log --> 日志

## exactarch=1 --> 与当前平台是否一致

## obsoletes=1 --> 是否检查包丢弃

## gpgcheck=1 --> 检查来源合法性和包完整性

## plugins=1 --> yum是否支持插件

## installonly_limit=5 --> 安装限制

## bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum

## distroverpkg=centos-release --> 发行版版本

   这里有一句很重要/etc/yum.repos.d/这个目录下使我们每个仓库的精确地图

技术分享

   看我们有这么多,它们都有一个共同点就是以.repo结尾,这就是仓库的标准命名。但到底该用哪个呢,不用担心我们用的是test.repo,因为其他的repo我都在内部给注销掉了,并且每个仓库都有一个cost类似于优先级,默认为1000.我们来看看这个精确地图里的内容吧:

技术分享

    解释一下:

各仓库配置

[repositoryid]

# 对于当前系统的yum来讲,此repositoryid用于惟一标识此repository指向,因此,其必须惟一;

name= 

# 当前仓库描述信息;

baseurl=url://path/to/repository/

# 指明repository的访问路径;通常为一个文件服务器上输出的某repository;

url:

ftp服务

ftp://SERVER/PATH/TO/REPOSITORY

http服务

http://SERVER/PATH/TO/REPOSITORY

本地目录:

file:///PATH/TO/REPOSTIROY

enabled={1|0}

此仓库是否可被使用

gpgcheck={1|0}

是否对程序包做校验

gpgkey=url://path/to/keyfile

指明gpgkey文件路径;

cost=#

指明当前repository的访问开销,默认为1000;

 好了,其实这里我们逗了一下阿黄,因为我们给了它地图确没有建立仓库,阿黄是找不到的。现在就来把仓库建立起来吧。需要使用createrepo命令,如果没有装只能用RPM装一下了。

技术分享

    这里我么挂载了CentOS的光盘,我们就把他当一个仓库吧,看看它为什么能成为一个仓库呢?

技术分享

    是不是发现有一个叫repodata的目录呢,看看里面是什么

技术分享

    OK,这就是我们的元数据,有了它就代表我们的仓库有被使用权了,如果你还记得我们的地图路径中所指向的应当是repodata目录的父目录,那一串乱七八糟的数字其实就是仓库的特征码了,标识着仓库是否发生过改变。

    

技术分享

技术分享

    是不是有了一个叫repodata的目录啊,至于为什么在这个目录中建设,是因为我的主机上配置了httpd服务,当然我们也可以配置一个ftp服务。

    

技术分享

    当然这个ftp我没有配置成repo仓库,而是共享了我写的一些脚本。好了,一切具备只欠东风了:


##yum:系统不能有两个yum进程同时启动

## command is one of:

## * install package1 [package2] [...] --> -y自动回答为yes

## * update [package1] [package2] [...] --> 升级

## * update-to [package1] [package2] [...]

## * check-update --> 检查可用升级,需要配置升级路径

## * upgrade [package1] [package2] [...]

## * upgrade-to [package1] [package2] [...]

## * distribution-synchronization [package1] [package2] [...]

## * remove | erase package1 [package2] [...] --> 卸载一个被依赖的包时会将依赖它的包都卸载

## * list [...] 

## yum list extras [glob_exp1] [...] --> 机器上装了,但是yum仓库中没有

## yum list obsoletes [glob_exp1] [...] --> 机器上装了,但是有更新的版本

## yum list recent --> yum仓库中新添加的包

## * info [...] --> 查询包的信息

## * provides | whatprovides feature1 [feature2] [...] --> 查询指定文件由哪个程序包安装完成

## * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] --> 清理包|元数据|过期缓存|rpm数据库|插件|所有

## * makecache --> 创建缓存

## * groupinstall group1 [group2] [...]

## * groupupdate group1 [group2] [...]

## * grouplist [hidden] [groupwildcard] [...] --> 组列表,可以一下安装|卸载一个组

## * groupremove group1 [group2] [...] --> 

## * groupinfo group1 [...] --> 显示包租详情,安装和使用时包组要用""引起来,CentOS7中使用install就可以了,如:yum install @"Server Platform Development"

## * search string1 [string2] [...] --> 在包名和sumary信息中搜索指定的关键字

## * shell [filename]

## * resolvedep dep1 [dep2] [...]

## * localinstall rpmfile1 [rpmfile2] [...] --> 安装本地的程序包文件而不是仓库中的,CentOS7之后使用install就可以了

##   (maintained for legacy reasons only - use install)

## * localupdate rpmfile1 [rpmfile2] [...] --> 升级本地的程序包文件而不是仓库中的

##   (maintained for legacy reasons only - use update)

## * reinstall package1 [package2] [...] --> 覆盖安装

## * downgrade package1 [package2] [...] --> 降级

## * deplist package1 [package2] [...]

## * repolist [all|enabled|disabled] --> 显示全部|可用|禁用仓库信息

## * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]

## * history       [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll-back|new|sync|stats]

## * load-transaction [txfile]

## * check

## * help [command]

   好好好,不要慌不要忙,让我给你演示一下就会很明白了:

技术分享

    这里clean all就是清空所以缓存,repolist是查看仓库列表,因为172网段是在教室的IP段所以连不上,不过我一经把本机的http服务器的IP给改过了,所以xen4是可用的。

技术分享

技术分享

    install就是安装了,-y是自动回答为yes,我们看到安装xen使用了DVD1和xen4这两个仓库。

技术分享

    info为查看包的相关信息

技术分享

    update为升级软件包,这里不需要升级

技术分享

    我们有时会遇到要安装一个包组,可以使用grouplist查看以后再使用groupinstall安装就可以了,不再演示。

    

技术分享

    remove卸载软件包

  好了,这大致就是yum的使用情况了,其他的选项大家使用man或者在实践当中继续学习吧。这里在补充一个小知识点:

    yum有内置变量,用于保存当前平台的相信息;客户端下载配置文件后可以自动选择适合自己arch的rpm包

    (1) $raleasever: 当前OS发行版的主版本号;

    例如,对CentOS 6.6 x86_64,主版本号为6;

    (2) $arch:平台

    i386, i486

    (3) $basearch: 基础平台, 例如i686, i586, i486以及i386的基础平台同为i386;

    (4) $YUM0-$YUM9 --> 自定义使用的变量


##如果6升级为6.1,我们可以ln 6 --> 6.1这样客户端不用改变就可以升级到6.1的安装包仓库     例如:

    baseurl=http://repo.magedu.com/centos/$releasever/$basearch

    当前系统为CentOS 6.6 x86_64

    http://repo.magedu.com/centos/6/x86_64

 希望本文能够给您带来帮助,如有错误敬请指正,拜谢!



本文出自 “Linuxlove” 博客,请务必保留此出处http://linuxlover.blog.51cto.com/2470728/1631592

你玩游戏吗?软件包的管理(二)——YUM

标签:yum   linux   软件   管理器   

原文地址:http://linuxlover.blog.51cto.com/2470728/1631592

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!