YUM前端程序包管理工具的使用

   在YUM没出来之前,我们对程序包管理都是使用RPM程序包管理器(RPM家族),但RPM也有一个很大的诟病,那就是“软件依赖属性”问题,我们知道,RPM在打包软件时,加入了一些信息记录功能,这些信息包括软件版本、大小、说明、依赖性等,我们也称为元数据,然后在Linux系统上建立一个数据库存储这些信息,当我们要安装一个软件时,首先会去数据库中查找是否存在该软件的相关信息,如果没有则无法安装,这也就是软件依赖的问题,直到YUM出现该问题被很好的解决。
YUM原理:

    yum属于C/S架构,它分为yum客户端及yum服务端,yum服务端主要存储的是rpm包及元数据(包名、
大小、依赖关系、软件制作者等),通常我们也会把这些元数据称为清单列表,yum服务器是对外共享的,
当我们要下载某个程序包时,yum客户端对yum服务器发送一个指令(例如:yum isntall httpd),
yum服务器接收到该指定首先会在元数据中查找该程序包名即依赖的包是否存在,然后将查找出来的
元数据(mata_data)发送给yum客户端(存储在yum_cache缓存中),然后yum客户端再向yum服务端
发送一个指定告知要下载的包并下载,最后整个安装的就此结束,如图:

10.png

配置yum仓库:

在上面提到过在使用yum安装程序包的时候,客户端发送指令给yum服务器,那服务端不能莫名其妙
的就能接收指令啊,是不是需要客户端指定一个yum服务器的路径,对的,就是这样,我们在使用
yum的时候需要配置yum仓库,里面涉及到一些相关的属性配置,主要的两个配置文件`/etc/yum.conf
(为所有仓库提供的公共配置)`、`/etc/yum.repos.d/*.repo(为仓库的指向提供配置)`,相
的属性配置释义可以通过man yum.conf配置文件进行了解。

yum.conf相关参数详解:

cachedir yum缓存及db文件目录
keepcache 在yum安装完整后是否要保留头文件和yum包的缓存,不是“1”就是“0”,默认为1,保留文件
logfile yum日志存放路径
debuglevel 调试级别(0-10),默认为2
exactarch 在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包
obsoletes 这是一个update的参数,具体请参阅yum(8),简单的说就是相当于upgrade,允许更新陈旧的RPM包
gpgcheck 是否检查包的签名,不是“1”就是“0”,默认为0,不检查
plugins 是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件
installonly_limit 允许保留多少个内核包
bugtracker_url bug跟踪器,提交给错给给指定路径yum
distroverpkg 确定发行版版本的包

配置yum仓库:

配置yum仓库是以.repo扩展名结尾,放在/etc/yum.repo.d目录下,例如我自己配置的一个yum
仓库(11、12图),

11.png

12.png

提示:图12中的“7”、“x86_64可以用$releasever跟$basearch替代,这样就更具有通用性了”

库选项(也就是配置自己的库相关参数):

Example: [repositoryid] 库的唯一标识,相当于身份证,图12库标识为“epel”
name 仓库名称
baseurl 指向yum服务器的地址,这里可以指定多个地址,格式参考man yum.conf,指向的服务器可以是http://、ftp://、nfs://、file://
enabled 不是“1”就是“0”,告诉yum是否启用该仓库,默认为1启用
keepcache 覆盖[man]中配置keepache
gpgcheck 不是“1”就是“0”,告诉yum是否检查包的签名,默认为“0”
gpgkey 表示自动从指定的路径导入key,例如:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6或者在光盘中/media/CentOS_6.10_Final/RPM-GPG-KEY-CentOS-6

....

yum用法及示例:

通过man yum获取帮助
用法:
    yum [options] [command] [package ...]
    Options:
      -y:安装程序包都自动回答yes
      -nogpgcheck:禁止检查包签名
      -q, --quiet:运行时没有信息,可以跟-y一起使用
      --disablerepo=repoidglob:临时禁止指定的仓库,可以使用glob特性
      --enablerepo=repoidglob:临时启用指定的仓库,支持glob特性
      --noplugins:禁用所有的插件

command is one of:
    install package1 [package2] [...]:安装程序包,同时确保所有依赖都满足,同一标准
    reinstall package1 [package2] [...]:重新安装程序包
    update [package1] [package2] [...]:升级程序包
    downgrade package1 [package2] [...]:降级程序包
    check-update:检查可升级的程序包
    remove | erase package1 [package2] [...]:卸载程序包
    yum list [all | glob_exp1] [glob_exp2] [...]:列出所有的程序包,可以根据glob来查询
    yum list {available | installed | updates} [glob_exp1] [...]:列出available(可用的程序包)、已经安装的程序包installed、可更新的程序包
    info [...]:查看程序包的基本信息
    provides | whatprovides feature1 [feature2] [...]:查看指定的特性是由哪个程序包所提供的
    clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]:清除缓存
    search string1 [string2] [...](以指定的关键字搜索程序包名及summary简要信息,例如:yum search "z")
    deplist package1 [package2] [...]:查询程序包所提供的能力
    history [info|list|packages-list|packages-info|summary|addon- 
    info|redo|undo|rollback|new|sync|stats]:查看yum事务历史
    localinstall rpmfile1 [rpmfile2] [...]:安装本地程序包
    localupdate rpmfile1 [rpmfile2] [...] :升级本地的程序包
注意:安装或升级本地程序包需要先下载最新的程序包到本地上然后操作
示例:
`
yum -y install zsh:安装zsh程序包,并自动回答yes
yum -q -y install zsh:静默安装zsh程序包,但不建议,中间出了问题都不知道
yum -y install zsh --disablerepo=base:安装zsh程序包,但禁止base仓库(如图14)
`

4

包组的相关命令:

groupinstall(安装包组)
    groupinstall group1 [group2] [...](用于在指定类型的组中安装所有单独的包)

grouplist(列出所有包组)
    grouplist [hidden] [groupwildcard] [...]

groupremove(是用来删除一个组中的所有包)
    groupremove group1 [group2] [...]

groupinfo(用于给出组的描述和包列表以及这些包被标记为什么类型)
    groupinfo group1 [...]

rpm源码包编译过程:

编译源码的过程通常是:
    源代码 --> 预处理 --> 编译--> 汇编--> 链接--> 执行

源码编译三步曲:
    1)运行configure脚本
    2)运行make命令(make -j # 增加速度)
    3)执行make install
    ①、首先在官网或者其它途径获取源代码,解压后进入文件中
    ②、执行./configure脚本,通过选项传递相关的参数,指定启用的特性(如安装路径),执行时会参考用户的指定及Makefile.in生成makefile文件
                    在执行该脚本时,会检查外部依赖,也就是说会需要依赖其它包才能完成该步骤
    ③、执行make指令,该步骤会根据makefile文件来判定执行预处理器、编译器、汇编器等操作
    ④、执行make install安装程序包
    ⑤、添加PATH路径、帮助文档路径、头文件等

./configure脚本中的选项:
  --help:获取其支持的选项
    选项分类:
      安装路径设定:
         --prefix=/PATH/TO/SOMEWHERE:指定默认安装位置。
         --sysconfigdir=/PATH/TO/SOMEWHERE:配置文件安装位置
           System types:
            Optional Features:可选特性
               --disable-FEATURE:
                --enable-FEATURE[=ARG]

            Optional Packages:可选程序包
                 --with-PACKAGE[=ARG]
                 --without-PACKAGE

以上为yum基本用法,Thanks

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容