linux软件包管理之yum详解

程序包的前端管理工具:yum (Yellowdog Updata Modifier)
前端管理工具并不能取代软件管理器,而仅是作为软件管理器补充,而yum在的工作还需要依赖于rpm软件管理器完成安装

yum 是C/S架构(client,service)
yum能够自动解决依赖关系,当需要安装某个程序时,不管该程序包有多少层次的或依赖多少个程序包,yum都能够找到所被依赖的程序包,并在本地完成需要安装的程序,yum能够自动解决依赖关系,那么程序包是怎么来的?yum的自动解决依赖的过程是依赖于某一种机制,在某一个地方存放着程序包
需要文件服务器(主要共享rpm包),这个文件服务器能够通过yum所支持的文件共享机制将各rpm包通过文件服务共享,yum作为客户端能够通过文件服务共享获取所需要的任意的rpm包,而这个文件服务器所输出的路径,给yum工作提供后端支持,面这后端支持称为repository“yum仓库” 但仅靠一个共享仓库是不能够完成yum的工作,yum需要自行发现各rpm包的依赖关系,并且根据其依赖关系到仓库中找到所被这依赖的程序包,那么仓库有多少个rpm包,各rpm包的这依赖关系是什么?是否有依赖仓库内并不存在的rpm包?这些都需要做事先的定义,也就是说明,这种依赖关系并不是yum自身就能够得知的,yum也是通过查询某个文件后得知的 因此,仓库中不仅有rpm包,也就是说,yum当前使用着仓库中的每一个rpm包的名称、安装后能提供那些文件、程序的依赖关系、等等。都存储在一些文件当中,yum在使用任何一个yum仓库时,首先会获取这些元数据文件,根据元数据文件分析需要安装的程序是否有依赖关系,所依赖的程序能够有多少存在仓库中,有多少本地系统是已经安装了的,根据后则下载所需要的程序包

repository:仓库
1、大量rpm包
2、仓库中的各rpm包的依赖关系、程序包安装后所生成的文件列表、等元数据文件
文件服务提供方式: ftp、http、nfs、file

yum工作机制: 在yum客户端上启动yum安装某个程序包时,yum在收到发起安装请求时,会根据本地配置文件中指定可使用的yum仓库,把仓库的各元数据文件下载到并缓存本地,以便快速分析,而后根据本地系统安装的程序包结果进行分析,需要安装的程序有多少个依赖关系程序包在本地系统上已经安装的,还剩余多少个尚未安装,然后到yum仓库获取尚未安装的程序包,并在本地安装 在获取服务端的元数据文件并缓存本地,yum在下次安装时再不用再去在服务端下载,直接查询本地缓存的即可,但是yum每次查询本地缓存的元数据文件时,也会到服务端根据元数据文件的MD5码做检测对比,如果服务端的元数据文件发生了改变,yum会自动下载元数据到本地,如果没有改变,那么不再下载,直接使用本地的元数据文件,也可以手动清除yum的缓存元数据文件
yum客户端:
1、配置文件:指定各可用的yum仓库
2、缓存元数据:yum会到各个可以仓库获取元数据并缓存至本地
3、分析元数据:主要查询依赖关系的包安装与未安装的情况,根据具体操作请求完成元数据分析

       安装:分析需要安装的包当中是否有依赖关系,如果如有,那些依赖包本地系统已安装,那些尚未安装,所依赖的程序包是否在仓库中都能获取               
       卸载:分析需要卸载的程序是否还有被其他程序所依赖,一旦卸载被其他程序所依赖的包时,通常会把依赖需要卸载的程序包一并卸载               
       查询:根据需要查询程序包安装后所生成的文件列表

yum客户端配置文件:
指定服务器的相对应访问协议格式
ftp ftp://server/path/to/repo
http http://server/path/to/repo
nfs nfs://server/nfs_path
file file:///path/to/repository

yum的配置文件: /etc/yum.conf
yum的核心配置文件 /etc/yum.repo.d/*.repo

仓库配置文件,以.repo结尾的文件都可以作为yum仓库的组成文件

配置文件格式:分为两段全局段:
[main]:主配置段

cachedir=/var/cache/yum/ b a s e a r c h / basearch/ basearch/releasever //缓存目录路径

keepcache=0 //是否保存缓存中已经被下载安装过的rpm包,(0表示不保存,1表示保存)

debuglevel=2 //调试级别 logfile=/var/log/yum.log //日志文件,所安装的程序包都有记录日志

exactarch=1 //在获取程序时,是否要与主机的版本完全精确匹配才安装(0表示否,1表示是)

obsoletes=1 //对于废弃的程序是否使用(0表示否,1表示是 )

gpgcheck=1 //是否检测程序包的来源合法性及完整性(0表示否,1表示是 )

plugins=1 //是否支持yum使用插件(yum的二次开发功能),(0表示否,1表示是 )

installonly_limit=3 //

[repo]:仓库配置段

仓库配置文件格式: 路径:/etc/yum.repo.d/*.repo 可以在一个文件定义多个仓库,也可以单个文件定义单个仓库

vim /etc/yum.repo.d/cjk.repo
[repo_ID] //仓库名称,自定义,不能与已有的同名,否则出现冲突

name=lyz //描述信息

baseurl=file:///mnt/cd //指定仓库的访问路径

enabled=1 //是否启动该仓库,(0表示不启用,1表示启用),如果没有指定该项,则为默认启用

gpgcheck=1 //是否检测程序包的来源合法性及完整性(0表示否,1表示是 ),如果该项指定为1时,那么需要指定公钥文件,如果指定为0时,则不需要指定公钥文件

gpgkey=/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release //指定gpgcheck项检测时使用制作的公钥路径位置,(路径:可以是本地路径,也可以是服务器端路径)

cost=1000 //指定yum仓库的优先级,如果不指定该项,默认为1000,数值越小,优先级超高

yum命令与使用: yum [options] COMMAND**
选项:
-y 不询问,自动安装
–nogpgcheck 手动禁止检测来源全省性及完整性,命令行指定的选项作用效果大于配置文件

子命令:
repolist 显示已配置可用的仓库
all 显示所有的仓库
enables 只显示启用的仓库(默认)
disabled 只显示未启用的仓库

clean [all|packages|metadata|expire-cache|rpmdb|plugins] 删除缓存的数据
all 表示所有
packages 表示程序包
metadata 表示元数据
expire-cache 表示过期的数据
rpmdb 表示rpm数据库
plugins 表示插件

list 列出仓库中和已经安装的所有一个或一组软件包(显示为@仓库名或Install 表示已经安装的)
installd 只查看已经的程序
available 只查看仓库中或未安装的程序

grouplist 列出仓库中和已经安装的所有软件包组
info PACKAGES_NAME 查看程序包信息
groupinfo “PACKAGES_GROUP_NAME” 显示包组信息,如果包组名称有空格,需要使用“”双引号
三个与开发相关的包组 Desktop Platform Development Server Platform Development Development Tools

install PACKAGES_NAME . . . 安装一个或多个软件包
reinstall PACKAGES_NAME . . . 重新安装一个或多个软件包
groupinstall “PACKAGES_GROUP_NAME” 安装指定的程序包组
check-updata 检测系统中是否可升级的程序
updata PACKAGES_NAME . . . 升级指定程序包,同时可以指定多个,默认升级到仓库中的最新版本,也可以明确指定版本号升级
downgrade PACKAGES_NAME . . . 降级指定程序包
erase | remove PACKAGES_NAME . . . 卸载,会把卸载某个程序时,所依赖需要卸载的程序一起卸载
groupremove “PACKAGES_GROUP_NAME” 卸载指定包组
whatprovides | provides /PATH/TO/SUMFILE 查询某个文件是由哪个程序包安装生成的

deplist PACKAGES_NAME 列出指定程序包的依赖关系

history 查看历史操作记录
install | localinstall /PATH/TO/PACKGES_FILE 安装本地的rpm程序包
shell 运行交互式的 yum,quit退出 yum配置文件可用的四个宏: $releasever: 程序的版本,对yum而言是系统的release版本,只替换为主版本号,如RedHat 6.7,则替换为6 $arch: 系统架构 $basearch: 系统基本架构,如i386,i586等基本架构为i386,或x86_64 $YUM0-9: 在系统中定义的,在yum中使用的变量

yum repository:yum仓库
yum仓库相当一个文件服务器,除之外文件服务器还需要把仓库内的所有rpm元数据信息抽取出来,保存到某个目录中
yum仓库指向repodata目录所在的目录即可

repodata/目录的元数据文件:
*-primary.xml.gz 主元数据文件:主要保存仓库中的每一个程序的名称等信息
*-filelists.sqlite.bz2 存储每一个程序包中所包含的文件列表,该文件使用sqlite方式访问接口,因为文件比较大,基于关系型数据库引擎能够快速检索所需要的数据
*-other.xml.gz 保存有时间戳、权限、属主、属组、每 一个程序的校验码、等信息,该文件有两种格式,xml和sqlite
*-comps.xml.gz 保存i当前yum仓库内所定义好了的包组的相关信息,每个包组的组名、每个包组所包含的各个程序的名称、包组内的必须安装程序名称、可选安装程序名称及默认额外安装的程序

在仓库中的 repomd.xml 文件保存元数据的MD5码,yum客户端每一次执行时,会先获取该文件中的内容,并查询本地每一个缓存的元数据文件的MD5码,与repomd.xml文件中保存的是否为一致,如果一致,则说明仓库的元数据并有改变,如果不一致则说明本地的缓存失效了,那么yum客户端则会下载仓库中的元数据文件

创建yum仓库: 使用http协议共享rpm包
1、获取rpm包,本章实验使用光盘镜中的Packages目录下的rpm包制作yum源 # cp -r /mnt/cd/Packages /var/www/html/ 把光盘所在挂载点下的光盘中的Packages复制到/var/www/html/目录下
2、使用createrepo命令创建仓库,创建完成后在目标目录下生成repodata目录,些目录下生元数据文件,并没有comps.xml.gz 组文件,如果没有createrepo命令,需要自行安装 # createrepo /var/www/html/Packages/ 使用createrepo命令创建仓库,路径为rpm包所在的目录
3、启动http服务 # service httpd restart
4、查看80端口是被监听 # lsof -i :80或 # netstat -tnl
5、配置客户端yum源,可以使用本机配置,也可使用另一台主机作为客户端
vim /etc/yum.repos.d/http.repo 新建并编辑yum源配置文件,添加以下内容 [openhttp]
name=open
baseurl=http://192.168.18.30/Packages //该项中的ip 为yum仓库的主机ip地址 enabled=1
gpgcheck=0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值