一、程序包的组成:

     1、底层内核:进程管理、内存管理、网络协议栈、驱动程序等

     2、应用程序 :各种应用 使大家更好的通过它完成工作。

二、一个合格的程序包包含以下内容:

     1、二进制程序,通常在linux /bin、/sbin、/usr/bin、 /usr/sbin等目录下。

     2、库文件。通常在linux /lib、/lib64、/usr/lib、/usr/lib64等目录下。

     3、配置文件。一般存放在linux /etc目录下。

     4、说明和帮助文档,Linux man 和 info文件中。

三、检验一个合格的包管理器需要从哪几方面入手:

      1、打包,就是将一个合格的程序包打包成合格的归档文件也就是我们所说的压缩文件。

      2、安装,将归档文件也就是压缩文件展开到本地硬盘中,使其可以正常使用。

      3、升级,更新程序包的新功能和bug.

      4、卸载,从本地硬盘中移除已展开的归档文件;将其删除。

      5、 校验。和归档文件的源包进行对比确保程序包是否被人修改过、是否完整一致。

四、根据系统划分由包管理器的种类:

      1 、debian和ubuntu使用的deb.

      2、redhalt cnetos等Linux使用的rpm.

注:发展到后期RPM is Package Manager.

五、rpm的基础知识

       1、rpm是由rpm build打包工具根据specs文件打包生成。

       2、rpm包根据功能的不同分为核心包跟支包,核心包是比较常用的功能;支包是特定功能,且在版本号前面有个devel作为标识。

      3、 rpm包的名字,如:bash-4.2.4-1.el7.x86_64.rpm

            1)bash 是包的名字;

            2)第一个4 是包的主版本号;

            3)第一个2是修正版本号;

            4)第二个4是第一次的包的release号;

            5)第一个1是RPM针对本包所做的release号;

            6)el7代表本包可以用在哪个系统上什么版本。

            7)x86_64表示包属于32位还是64位平台。

       4、rpm包在本地生成的数据库是/var/lib/rpm/。

       5、rpm包和包之间存在依赖关系,加入A和B依赖于C,卸载了C;AB就无法运行使用。

       6、获取rpm的途径:

       1)发行版提供的程序包;
       2)Fedora-EPEL
       3)项目的官方站点
       4)搜索引擎

       5)系统安装光盘镜像。

六 、用RPM的基本命令对程序包进行管理

     1、RPM的命令格式

   rpm [命令选项] [ 命令参数] 操作的程序包名称

     2、RPM的安装

       rpm –ivh --nodeps –-force sudo

   [解析]  i为安装,v为显示详细信息,h为hash是进度信息,nodeps忽略包的依赖关系,force是强制的意思!

       linux中rpm 、yum详解_应用程序

     3、RPM的卸载

     rpm  –e  [--nodeps]  sudo

[解析]  需要注意的是在卸载软件包的时候若和其它包有依赖关系,可以用--nodeps来强制卸载

    linux中rpm 、yum详解_网络_02

     4、RPM的更新

  rpm –Uvh sudo

  rpm –Fvh sudo

解析:Uvh为判断是否有旧版程序包,有则升级;如果没有,则安装;Fvh 判断是否有旧版程序包,有则升级;如果没有不进行任何操作;

    linux中rpm 、yum详解_微软雅黑_03

    5、RPM的查询

rpm  –q[a |f |p |i |l |d |c]  sudo

[解析]

-qa  查询所有已安装的软件包;

-qf  查询 文件所属软件包;

-qp  查询软件包(通常用来看下还未安装的软件包);

-qi  显示软件包信息;

-ql  显示软件包中的文件列表;

-qd  显示被标注为文档的文件列表;

-qc  显示被标注为配置文件的文件列表;

-p: 查询针对是未安装的程序包文件;

-q --scripts:查询程序包相关的脚本:
      preinstall: 安装前脚本;
      postinstall:安装后脚本;
      preuninstall: 卸载前脚本;
      postuninstall: 卸载后脚本。

 linux中rpm 、yum详解_微软雅黑_04

    6、RPM的校验

 rpm  -V  sudo(注意:此处只有改动相关文件后才会输出信息)

结果解析:S.5.L.T….

-V校验指定rpm包中的文件

校验内容中的8个信息的具体内容如下:

S 文件大小是否改变

M 文件的类型或文件的权限(rwx)是否被改变

5 文件MD5校验和是否改变(可以看成文件内容是否改变)

D 设备的中,从代码是否改变

L 文件路径是否改变

U 文件的属主(所有者)是否改变

G 文件的属主是否改变

T 文件的修改时间是否改变

文件类型

c 配置文件(config file)

d 普通文档(documentation)

g “鬼”文件(ghost file),很少见,就是该文件不应该被rpm包包含

l 授权文件(license file)

r 描述文件(read me)

  linux中rpm 、yum详解_网络_05

    7、RPM包的校验

来源合法性验正:非对称加密
        完整性验正:单向加密

        导入密钥:rpm --import /PATH/TO/KEY_FILE
        校验:rpm -K /PATH/TO/RPM_FILE

     rpm -K /var/tmp/yum-root-vsiZgP/nmap-6.49BETA4-1.x86_64.rpm

   linux中rpm 、yum详解_应用程序_06

七 、yum的介绍和命令操作

    1、YUM: Yellowdog Updater Modified

    2、yum工作流程图

   linux中rpm 、yum详解_linux_07

     3、 yum repositories:
       客户端获取文件的三种途径:
           
ftp://hostname/PATH/TO/REPO
            http://hostname/PATH/TO/REPO
            file:///PATH/TO/REPO

     4、yum程序的配置文件:

        1)/etc/yum.conf
            定义全局配置:对所有仓库都适用的配置
        2)/etc/yum.repos.d/*.repo
            一个文件通常用于一个或一组功能相近或相关的仓库

            定义一个仓库指向:

        linux中rpm 、yum详解_网络_08      

        linux中rpm 、yum详解_微软雅黑_09

     3)更新yum仓库

       yum repolist显示可用yum仓库列表

        linux中rpm 、yum详解_linux_10

       yum repoinfo 显示yum仓库列表详细信息

        linux中rpm 、yum详解_网络_11

        linux中rpm 、yum详解_应用程序_12

5、yum命令

    安装:yum install sudo

      linux中rpm 、yum详解_应用程序_13

  卸载:yum remove sudo –y

      linux中rpm 、yum详解_网络_14

更新:yum update sudo

     linux中rpm 、yum详解_网络_15

查询:

     yum info sudo 查询包的简要信息

     linux中rpm 、yum详解_应用程序_16

    yum search sudo 基于关键字的搜索,可用于查询某个包的核心包跟支包。

   

     linux中rpm 、yum详解_微软雅黑_17

   yum list sudo 查询已安装的包

     linux中rpm 、yum详解_应用程序_18

  yum provides /etc/sudo.conf 查询文件由哪个包安装的

     linux中rpm 、yum详解_linux_19

包组管理

   yum group紧跟yum命令 选项 包组名称,此项仅以groupinfo为例。

  linux中rpm 、yum详解_微软雅黑_20

6、用本地光盘当仓库源及创建本地仓库

  1)用本地光盘当仓库源:

   mkdir /cdrom

   mount /dev/cdrom /cdrom

  vim /etc/yum.repos.d/CentOS-Base-aliyun.repo

  linux中rpm 、yum详解_linux_21

注意:本地仓库源速度优于互联网所以请指定cost值,默认为1000

2)创建本地仓库

  yum install createrepo

    linux中rpm 、yum详解_网络_22

    mkdir /reposoure

    cp -af /cdrom /reposoure/

    rm –rf /reposoure/cdrom/repodata

    createrepo /reposoure/cdrom/

linux中rpm 、yum详解_微软雅黑_23

八、dnf的诞生

虽然yum可以解决包与包之间的依赖关系,但是还是有部分关联不清。所以出现了dnf.

  但是因目前还在测试中,所以今天本文不在此做详细讲解。