Linux之yum工具详解

2016-03-07  本文已影响2339人  魏镇坪

Linux 程序包管理

linux系统中的诸多程序都是由源代码编译或者由二次发行商选择性编译分布,其大部分的程序安装得了需要依赖于三方的库文件,甚至很多的程序依赖关系会进入到死循环的情况中。由于直接使用源代码编译安装比较繁,故出现了一系列的安装包管理程序。

各系统包及包管理程序:

Debian

1、软件包后缀
2、前端管理工具

RHEL系

1、软件包后缀
2、前端管理工具

SUSE

1、软件包后缀
2、实现工具

Fedora

1、软件包后缀
2、前端管理工具

RHEL Linux软件包命名规范

源代码
RPM包命名格式

程序包管理器

功能
组成部分
  1. 程序包的组成清单
    • 文件清单
    • 安装或卸载时运行的脚本,有如下四类:
      • preinstall : 安装过程开始之前运行的脚本,%pre定义 —nopre
      • postinstall: 安装过程完成之后运行的脚本,%post定义 —nopost
      • preuninstall : 卸载过程真正开始执行之前运行的脚本,%preun定义 —nopreun
      • postuninstall: 卸载过程完成之后运行的脚本,%postun定义 —nopostun
注意:他将程序的多个功能分拆多个安装包,单独实现
  1. 数据库部分
    • 存储程序包的名称和版本
    • 包与包的依赖关系
    • 各包的功能说明
    • 程序安装生成的各文件的文件路径及检验码信息

正确获取安装程序包的途径

1. 系统发行版的光盘或官方的镜像站点
2. 项目的官方站点
3. 第三方的组织制作方
4.明确知道来源的RPM(自已制作等)
注意:建议在使用程序安装包时检查其合法性,针对其做来源合法性程序包的完整性做校验

RPM包管理程序

1. RPM包的安装

synopsis: rpm {-i| —install} [install-options] PACKAGE_FILE

2. RPM包的升级

synopsis:
注意:
  1. 不要对内核做升级操作;4.0之前内核升级需要重启系统,Linux支持多内核版本并存,因此直接安装新版本内核,以防止新的内核出故障,导致系统无法正常启动,或者会中断在线业务
  2. 如果某源程序包的配置文件安装后曾被修改过, 升级时新版本的程序包提供的同一个配置文件不会覆盖老版本已经修改过的文件,而是把新版本的文件重命名后提供(filename.rpm.new的格式)

3. RPM包的卸载

synopsis:

rpm {-e|--erase} [--allmatches] [--nodeps] [—noscripts]

4. RPM包的查询

synopsis : rpm {-q|--query} [select-options] [query-options]

注意:RPM的查询支持正则表达式的格式

5. RPM包的校验

synopsis: rpm {-V|--verify} [select-options] [verify-options]

S.5....T. : 说明
         S 文件大小改变了
         M 文件权限改变了
         5 MD5校验码变了
         D 主次设备不匹配
         L read link变化 了
         U 属主改变了
         G 属组改变了
         T 修改时间变了
         P CAPABILITY变了
注意:如果其在某位上有变化,才会显示相应值," . "代表未修改过

程序包来源合法性验证和完整性验证:

1. 取公钥
2. 导入公钥
3.检验方式
4.查看导入的公钥
5.删除导入的公钥

6.数据库的重建

1. RPM的数据库存放路径
2. 获取帮助
3. 重建方法

synopsis: rpm {--initdb|—rebuilddb}

例:

=========

7.RPM检查合法性和完整性原理

1. 作者首先使用非对称加密算法生成一组密钥,即公钥与私钥
2. 作者再使用单身加密算法算出程序包特征码
3. 利用私钥对其特征码进行加密,这个过程叫签名
4. 使用者拿到作者发布的公钥对其特征码解密 ,如果这个过程通过,即能验证其来源的合法性
5. 使用与作者一样的单向加密算法算出已经拥有软件包的特征码,与之前解密后的特征码进行对比,其称之为完整性校验

=============

yum前端程序包管理工具

yum工具的出现

Linux平台中软件的安装都由源码文件编译成二进制文件后再运行,其在很多的制作好的rpm程序包,制作方在制作的过程中把通常不常用的功能去除进行编译打包,或者再将不同功能的包进行单独编译打包,提供多个功能程序包,这个情况安装软件时,一个功能包或者程序会依赖于其他程序的库文件,甚至有的时候会出现死循环依赖,导致软件的安装不正常工作或者根本安装不成功。此yum工具就是为了有效解决程序之间的依赖关系。早期yum工具是由RHEL的程序人员使用perl语言开发,随着长时间的使用后,发现性能比较低下或难于使用,此后再由RHEL官方使用C语言重写。

yum工具的实现原理

将诸多程序的包信息和头文件提取出来,放到一个集中的地方,记录其依赖关系。在下次安装的时候,均于存储的库文件查找相应的对应关系,再安装所依赖的软件程序。

yum的工作机制

其更像C/S架构模式,提供yum源的一方类似服务端,使用yum工具的一方类似客户端。客户端每次下载远程服务器软件包的一个元数据表,存放至本地进行缓存 ,在要安装程序时,查询缓存,如果存在, 就向远程服务器请求软件安装,如果有依赖关系,YUM服务器会检查其软件安装情况并记录本地,把有依赖并没有安装的软件提示用户安装。下载的元数据缓存至本地时,服务器会对元数据进行特征算法,与自己本地进行对比,如果变动了, 就要下载新的元数据

yum工具的传输协议及格式

yum的安装及卸载

yum配置文件及格式:

/etc/yum.conf
/etc/yum.repos.d/*.repo

yum命令

yum - yum - Yellowdog Updater Modified
synopsis: yum [options] [command] [package ...]

========

yum软件管理

yum的程序安装:
yum程序包的升级
yum检查升级
yum程序卸载
yum显示程序包
yum查看包的infomation信息
yum查看文件是由哪个包提供
yum清理本地缓存
yum生成缓存
yum搜索程序包名及summary信息
yum显示程序包的依赖关系:
查看yum事务历史(事务只记录安装、升级、卸载的信息)

yum显示仓库列表:

此项就是在/etc/yum.repos.d/*.reop中定义了enabled=1或者等于0的

=========

yum组管理

yum组的安装
yum组的查看
yum组的基本信息查看
yum组的删除
yum组的更新

==========

YUM的repo配置文件中可用的变量

===========

yum仓库的配置文件示例
    [base]  #光盘的基本软件,即os代表光盘
    name=CentOS $releasever $basearch on local server 172.16.0.1
    baseurl=http://172.16.0.1/cobbler/ks_mirror/CentOS-6.7-$basearch/ #此处如果使用公网公开的repo,这里的地址一定要为repodata目录相同层级地址
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
    enable=1 #如果此项未写,默认表示启用

    [extra] #  extra表示额外的程序
    name=CentOS $releasever $basearch extras
    baseurl=http://172.16.0.1/centos/$releasever/extras/$basearch/
    gpgcheck=0

    [epel]  # 是由公共组织权威维护
    name=Fedora EPEL for CentOS$releasever $basearch on local server 172.16.0.1
    baseurl=http://172.16.0.1/fedora-epel/$releasever/$basearch/
    gpgcheck=0
    
    [cdrom]
    name=cdrom
    baseurl=file:///media/
    gpgcheck=0

=========

创建yum仓库:
createrepo - Create repomd (xml-rpm-metadata) repository
上一篇 下一篇

猜你喜欢

热点阅读