程序包管理之yum


一、yum的相关概念php


yum是rpm的前端管理工具,实如今前端自动解决程序包依赖关系前端

yum是一个C/S架构的工具,客户端经过yum仓库实现程序包的安装,yum仓库必须是一个文件服务器,其内存放了须要安装的全部rpm包shell


yum的工做方式数据库

     (1)当用户使用yum命令安装程序包时,会根据yum的本地配置文件所指向的yum仓库的访问地址(URL),经过配置文件中的设定去链接yum仓库所在的主机;后端

     (2)yum仓库中存放有每一个程序包的元数据信息以及程序包之间的依赖关系,当yum客户端须要经过仓库获取程序包时,会首先将yum仓库中存放程序包信息的文件下载至本地的缓存空间中,经过分析此文件获取程序包之间的依赖关系以及查询本地是否有已安装的程序包,然后经过仓库去下载未安装的程序包;centos

     (3)程序包下载完以后一样存放在缓存空间中,而后执行rpm包的安装操做,首先先安装依赖包,安装完成后yum会自动删除缓存中存放的程序包,但程序包的元数据文件不会删除;缓存

     (4)下次要经过仓库安装新的程序包时,直接分析本地的元数据文件,但仓库中的程序包有可能会改变,仓库中还有一个记录了每一个元数据文件的特征码的特殊文件,客户端经过下载这个文件,分析文件的各程序包的特征码特征码和本地缓存的元数据文件中程序包的特征码是否一致,若是一致,则说明仓库中的程序包未发生改变,不然,说明仓库中程序包发生了改变,客户端会从新下载元数据文件然后下载程序包。bash

    wKioL1aDXtGzDTlzAABeWt3nw2k162.png          


dnf服务器

     dnf相对于yum更换了依赖关系解析器后端,效率更高。实现对yum工具的升级架构

CentOS系列经常使用前端工具: yum, dnf


YUM: 早期由yellow dog研发, Yellowdog Update Modifier


yum repository: 简称为yum repo 仓库 repodate所在目录即为yum源

     存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata);

     仓库文件服务器:

          ftp://

          http://

          nfs://

          file:///  本地仓库,例如光盘


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


二、yum的配置文件及yum仓库


yum客户端:

     配置文件

          /etc/yum.conf:为全部仓库提供公共配置

          /etc/yum.repos.d/*.repo:为指定的仓库的指向提供配置

     仓库的指向的定义

          [repositoryID] 仓库ID

          name=Some name for this repository 仓库简要功能描述

          baseurl=url://path/to/repository/ 仓库的访问路径

          enabled={1|0} 是否启用此仓库,默认为启用

          gpgcheck={1|0} 是否检查包的来源合法性和完整性

          gpgkey=URL 指明gpg密钥文件的URL

          enablegroups={1|0} 是否支持程序包组管理,默认支持

          failovermethod={roundrobin|priority} 故障转移方式(多个baseurl){轮循|优先级}  默认为:roundrobin,意为随机挑选;

          cost=# 开销值,默认为1000,若是多个仓库中都有同一个程序包,优先选择哪一个


例如

一、先用确保系统安装了yum工具程序包,安装后方可以使用yum命令

wKioL1aDXyGTzj5-AAAKqlAWwZU365.png


二、/etc/yum.repos.d/目录下存放有CentOS自行提供的指向互联网的仓库指向

wKiom1aDXxTh0uRpAAAX67Marzc002.png


三、自行制定新的yum仓库指向,注意.repo仓库不能同名

wKiom1aDX17RTaMgAAAIVTckU34407.pngwKiom1aDX2eS4XPlAAAuTIQ5glc960.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


三、yum命令的用法:


yum [options] [command] [package ...]


command is one of:

     * install package1 [package2] [...]

     * 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 [...]

     * info [...]

     * provides | whatprovides feature1 [feature2] [...]

     * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

     * makecache

     * groupinstall group1 [group2] [...]

     * groupupdate group1 [group2] [...]

     * grouplist [hidden] [groupwildcard] [...]

     * groupremove group1 [group2] [...]

     * groupinfo group1 [...]

     * search string1 [string2] [...]

     * shell [filename]

     * resolvedep dep1 [dep2] [...]

     * localinstall rpmfile1 [rpmfile2] [...]

          (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|rollback|new|sync|stats]

     * check

     * help [command] 



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


四、显示仓库列表:


     repolist [all|enabled|disabled] 显示全部/启用/禁用的yum仓库,默认显示启用的


例如

一、列出系统上已启用的yum仓库,首次查询会加载元数据等文件

wKioL1aDYCTQnTXAAABY2EsU_ME165.png

wKiom1aDYAjAigpmAAAsyibWCG4553.png

二、列出系统上全部的yum仓库,包括已启用的和被禁用的

wKiom1aDX6WwzlmOAACHnB_LAE8484.png



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


五、显示程序包:

     list

          # yum list [all | glob_exp1] [glob_exp2] [...]

               显示全部或匹配条件的程序包

          # yum list {available|installed|updates} [glob_exp1] [...]

               显示仓库中有但还没有安装的/已安装的/可升级的程序包


例如

一、显示全部yum仓库中的程序包,@表示已安装过的包,@anaconda表示安装系统时安装的包

wKioL1aDYEXxY_CfAAAGkIFibnw950.png

wKiom1aDYCmzIlFyAABYN4DdmWg888.png


二、显示全部以httpd开头的名称的程序包

wKioL1aDYGLDgC4OAAA9KGHP1q0066.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


六、安装程序包:

          install package1 [package2] [...]

     从新安装程序包

          reinstall package1 [package2] [...]  


例如

一、安装php-common程序包,会自动安装所要依赖的包,使用-y直接确认安装

wKioL1aDYJmSWxX1AACLidVN_HE949.png...

wKioL1aDYKqyiPeNAAA5gc7e-T4579.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


七、升级程序包:

     update [package1] [package2] [...]

     降级程序包:

          downgrade package1 [package2] [...]  


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


八、检查可用升级:

     check-update


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


九、卸载程序包:

     remove | erase package1 [package2] [...]

     注意卸载程序包时,依赖于此包的程序包也会被卸载


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


十、查看程序包的信息:

     info [...]


例如:查看gcc程序包的信息。相似于rpm -qi

wKioL1aDYPWwkxEKAABclPvUATc221.png



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

十一、查看指定的特性(能够是某文件)是由哪一个程序包所提供:

     provides | whatprovides feature1 [feature2] [...]


例如:查看gcc程序包所提供了哪些CAPABILITY

wKioL1aDYQqAtytjAAA0_W7nAlU590.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


十二、清理本地缓存:

     clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

          清理本地缓存中的 程序包/元数据/过时缓存/rpm数据库/插件/全部


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1三、构建缓存:

     makecache 建立缓存时须要遍历各yum仓库


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1四、搜索程序包及其信息:

     search string1 [string2] [...]

     以指定的关键字搜索程序包名及summary信息;


例如:搜索bash程序包及其相关信息

wKiom1aDYQXTWeZBAAB5cMHegBg540.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1五、查看指定包所依赖的capabilities:

     deplist package1 [package2] [...]


例如:显示gcc所依赖的capability

wKiom1aDYRrh5-9zAABUcs1TetM216.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1六、查看yum事务历史:

     history [info|list|packages-list|packages-info|summary|addon-   info|redo|undo|rollback|new|sync|stats]


注意:安装/升级/卸载等yum命令的执行都会启动yum事务,使用yum history能够显示事务历史

例如:查看yum事务历史,能够显示相关用户的操做等信息

wKioL1aDYVTQZP2nAAA4GmlcPkk712.png

卸载cpp程序包,再次查看yum事务历史,就会看到刚才的操做历史了

wKiom1aDYVejG8njAAAGOUdAjcA730.png

wKiom1aDYVjABjP5AAAWdX7jd4k520.png

wKioL1aDYXbDU_8LAAA-Mr9rxPM953.png



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1七、安装及升级本地程序包:

能够自动解决依赖关系,实际上使用install就能够解决依赖了

     * localinstall rpmfile1 [rpmfile2] [...]

          (maintained for legacy reasons only - use install)

     * localupdate rpmfile1 [rpmfile2] [...]

          (maintained for legacy reasons only - use update)


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1八、包组管理的相关命令:

     * groupinstall group1 [group2] [...]  安装指定包组

     * groupupdate group1 [group2] [...]

     * grouplist [hidden] [groupwildcard] [...]

     * groupremove group1 [group2] [...]

     * groupinfo group1 [...]


例如

一、显示全部包组

wKioL1aDYajzsupFAABLBd6yRkM338.png


二、安装Development tools包组,会自动安装包组内的程序包

wKiom1aDYbDADf1AAAA956mXBF0384.png


三、查看Development tools包组的信息

wKioL1aDYeGxkNk8AAAwM4KMXPg968.png


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


1九、如何使用光盘看成本地yum仓库:

     (1) 挂载光盘至某目录,例如/media/cdrom

          # mount -r -t iso9660 /dev/cdrom /media/cdrom

     (2) 建立配置文件

          [CentOS7]

          name=

          baseurl= file:///media/cdrom

          gpgcheck=

          enabled=


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


20、yum的命令行选项:

     --nogpgcheck:禁止检查gpg密钥;

     -y: 自动回答为“yes”;

     -q:静默模式;

     --disablerepo=repoidglob:临时禁用此处指定的repo;

     --enablerepo=repoidglob:临时启用此处指定的repo;

     --noplugins:禁用全部插件;


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


2一、yum的repo配置文件中可用的变量:

     $releasever: 当前OS的发行版的主版本号;

     $arch: 平台;

     $basearch:基础平台;

     $YUM0-$YUM9 :用户自定义

     例如

     http://mirrors.magedu.com/centos/$releasever/$basearch/os


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


2二、建立yum仓库:

     createrepo [options] <directory>


例如

一、先安装createrepo程序(CentOS 7自带)

wKiom1aDYeniZIX4AAAo-CoDNF4007.png


二、下载多个rpm包当作yum仓库

wKioL1aDYp7zup74AAB7PhT1KMU400.png


三、使用createrepo命令建立yum仓库在/yum/repo目录中,建立仓库时会读取当前目录下全部的rpm包的元数据然后生成repodata目录

wKioL1aDYrnh3go5AABXNBYrpqo725.png


四、repodata中文件使用UUID方式命名,存放了全部rpm包的元数据信息,repomd.xml就是存放其余几个文件的特征码的特殊文件

wKiom1aDYqqxgAAbAABt-rgwKAU156.png


五、以后就能够修改配置文件指定生成的yum仓库指向

wKioL1aDYu6TXf4gAAAHRIpe8gc740.png

wKiom1aDYtKAj0fqAAA-myzVLr4195.png


六、使用yum repolist能够查看到新生成的yum源,以后就可使用生成的yum仓库来下载并安装rpm包了

wKioL1aDYwTjCZxPAABA14ca4ys677.png

相关文章
相关标签/搜索