yum rpm原理

简单罗列基础命令,不粘贴、不复制,只分享我的想法!

GNU/LINUX是一个开源的操作系统,遵循POSIX规范,种类异常丰富的开源软件均能在以Linux为kernel的OS中运行,前提是你需要把你想要安装的开源软件在你的硬件平台上进行编译和安装,非常的麻烦,为了解决流行软件安装的复杂问题,程序包管理器应运而生。

程序包管理器其实是Linux Release推出一种程序包的管理程序,这个程序包管理器管理那些已经被Linux Release在流行的硬件平台上对源代码的软件进行特殊编译(添加校验安装硬件环境等)转变为特殊格式的程序包,类似于你在win7操作系统下面安装.exe格式的应用程序。

说说,两大主流的Linux发行版Debian和RedHat中的RedHat包管理器RPM(RPM Packagemanager,没错因为LSB已经声明RPM作为Linux OS的标准包管理器)。

其实RPM包管理器就是把经过特殊编译之后的.rpm包解压缩到LSB中FHS规定的各个目录中(主要是二进制程序文件、库文件、帮助文件和配置文件),Linux下也有一些文件类似于Windows中注册表的作用,就是会在本地的/var/lib/rpm下生成某些数据库文件,去记录安装这个软件的各项基本详细,以方便后期的删除和升级。

其实,通过RPM管理器去安装软件非常简单,根本不会像Windows那样“下一步”一个命令就OK,因为Linux的特点就是尽量少的捕获用户接口。

以上是想说明RPM包是什么,总结之后,其实RPM包就可以理解为特殊二进制程序,他是与硬件平台、内核相关,所以下面对RPM包及RPM包管理器进行说明:

1、  RPM包的格式:

软件名称-软件版本信息-发布的次数.硬件平台.rpm

软件版本信息分为:major.minor.release

Major:rpm包有重大改进。

Minor:某子功能发生改变。

Release:修复部分bug之后。

为了避免一个主包过大,会分为多个子包

2、  RPM包管理器使用:

wKioL1UqfkGzd6RiAARs6VsFtqs790.jpg

图1

wKiom1UqfRmxuushAAVM73D61qU444.jpg

图2

wKioL1UqfpuDrX6DAAJ-UHjA9w0210.jpg

图3

3、RPM弊端:

使用RPM管理器安装rpm包,不可以解决依赖关系,如图4(为了安装tomcat这个程序包你还需要安装其它包,因为tomcat这个rpm包实在有以上依赖包的环境下编译完成的,所以你的本机也同样需要这些环境,我想你应该明白!),为了更加方面用户安装一套完整程序,RedHat使用了YUM(Yellowdog Up Modifier)管理器,专门用户解决程序包之间的依赖关系,YUM是RPM程序包的前端工具,没有RPM包YUM就不可以使用,但是没有YUM你依然可以使用RPM管理器安装rpm包,只不过效率很低,你需要一个一个的解决依赖关系,同样在卸载的时候也是需要一个一个解决依赖关系。

wKiom1UqfYfTCt-ZAAH577imm4E855.jpg

图4

我认为RPM包学会的重点是需要去实践,这些命令看似很多,但是常用的就那么几个,而且在有网络或者YUM源的情况下,YUM会是你的首选包安装工具,毕竟更加“智能”。

其实YUM这块内容只要理解两个问题就可以了。

1、  YUM的工作原理

YUM是依托于文件共享的C/S模式架构的,本机需要安装的rpm包就是通过这些文件共享的服务从YUM仓库中传送到你的主机缓存(/var/cache/yum),然后安装,之后再把缓存中的数据删除。

2、  YUM如何解决依赖关系的

YUM管理程序会把YUM仓库中的repodata数据下载到/var/cache/yum下,repodata记录了相应仓库的所有rpm包的元数据,如果你安装A包,但是A包依赖B包和C包,B包你已经安装,YUM会检测到需要安装B和C,再次检查/var/lib/rpm这个数据库发现已经安装B包,结果只是从相应仓库中找到C包,安装即可。

3、  YUM如何解决本机的仓库列表与实际仓库列表一致性问题

通过对比元数据的特征码解决问题,每一次安装程序的时候,都会对比本地缓存的repodata特征码和实际仓库中的元数据特征码是否一致,去解决。

4、  如何指向一个仓库

/etc/yum.conf这个是公共配置文件,为YUM程序指明缓存路径,是否保存缓存中的数据等,如果配置repolistory的指向,需要在/etc/yum.repos.d/目录下建立一个以.repo结尾的配置文件,具体内容如下:

[Repo_id]repo的唯一标示

name=描述内容

baseurl=(仓库所在的具体的所在位置,不许是repodata的父目录,约有三种格式)

ftp://

 http://

file:///

enabled={1|0}是否启用这个指向,也可以没有这一行。

gpgcheck={1|0}是否使用gpg这个机制来验证软件包的合法性与完整性默认是1

gpgkey=指定gpg文件的具体路径。

下面是我以光盘所挂载的目录为仓库,关闭指向Centos-Base仓库,只剩下32bit.repo效果如图1。

wKioL1UqfweDDmsSAAR2OAn9rug905.jpg

图1

5、  如何创建一个YUM仓库

这个比指向一个YUM仓库还要简单,把相关的rpm包放到某目录下通过createrepo命令进行创建即可,man createrepo一下就可以了。

6、  YUM配置文件中的内置变量

主要解决,为不同硬件平台提供包的一种方法。

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

$basearch:代表当前的基础平台

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值