1.rpm的功能   

       rpm :程序包管理器

    功能:将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便的实现程序包的安装、升级、卸载、查询等操作。

   源代码-->目标二进制格式-->组织成为一个或有限几个“包”文件

    1.程序包的组成清单(每个程序包都单独实现)

    文件清单

    安装或卸载时运行的脚本

    2.数据库(公共)

    程序包的名称和版本

    依赖关系:

    功能说明

    安装生成的各文件的文件路径及校验码信息

    ...


2.rpm的命名格式

    name-VERSION-release.arch.rpm

    name:软件包名称。

    version:带有主、次和修订的软件包版本。

     release: rpm包的发行号

     arch:硬件平台。硬件平台包括了:i586、i686、x86_64、ppc、sparc、alpha...


例: zenity-3.8.0-4.el7.x86_64.rpm

    zenity: 软件名称

    3.8.0: 软件版本

    4.e17: 发行号和适用于centos7

    x86_64: 适用于x86_64的硬件平台

   

3.rpm命令用法

    rpm命令:rpm [OPTIONS] [PACKAGE_FILE]

        安装: -i,--install

        升级: -U,--update,-F,--freshen

        卸载: -e,--erase

        查询: -q,--query

        校验: -V,--verify

        数据库维护:--builddb,--initdb

    GENERAL OPTIONS:

        -v:verbose,详细信息

        -vv:更详细的输出


(1)安装

    rpm {-i|--install} [install-options] PACKAGE_FILE ...

    [install-options]:

            -h :hash marks输出进度条;每个#表示%2的进度

            --test :测试安装,检查并报告依赖关系及冲突消息等

    --nodeps :忽略依赖关系,不建议使用

            --replacepkgs :重新安装

            --nosignature :不检查包签名信息,不检查来源合法性

            --nodigest :不检查包完整性信息

例:

wKiom1bqJ_DT2weeAAAgU5H7gYA164.png

注意:rpm可以自带脚本

分为四类:--noscripts(不运行脚本)

    preinstall:安装过程开始之前运行的脚本,%pre ,--nopre 

    postinstall:安装过程完成之后运行的脚本,%post ,--nopost          preuninstall:卸载过程真正开始执行之前运行的脚本,%preun ,--nopreun

    postuninstall:卸载过程完成之后运行的脚本,%postun,--nopostun


(2)升级

    rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

    rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

        [install-options]

            -U :升级或安装

    -F :升级

    --oldpackage :降级

    --force :强制升级

例:

wKioL1bqLZmyC3hdAABUC9r3W24108.png

注意:

a. 不要对内核做升级操作,Linux支持多内核版本并存,因此,直接安装新版本内核

b. 如果某原程序包的配置文件安装后曾被修改过,升级时,新版本的程序提供的同一个配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供


(3)卸载   

    rpm {-e|--erase} [--allmatches] [--nodeps]  [--test] PACKAGE_NAME ...

    --allmatches :卸载所有匹配指定名称的程序包的所有版本

        --nodeps :忽略依赖关系 

        --test :测试卸载,dry run模式

例:

wKiom1bqNkmgirqZAAARoqVlVn0398.png


(4)查询

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

    -q 查询指定的程序包是否已经安装,会显示详细信息

    [select-options] 

        PACKAGE_NAME :查询指定的程序包是否已经安装,及其版本

        -a,--all :查询所有已经安装过的包

        -f FILE,--file :查询指定的文件由那个程序包安装生成

        -p, --package : 用于实现对未安装的程序包执行查询操作

        --whatprovides CAPABILITY :查询指定CAPABILITY由那个程序包提供

        --whatrequires CAPABILITY :查询指定的CAPABILITY被那个包所依赖

    [query-options]

        --changelog :查询rpm包的changelog

        -l, --list :程序包安装生成了哪些文件列表

        -i, --info :程序包相关的信息,版本号、大小、所属的包组等...

        -c, --configfiles :查询指定的程序提供的配置文件

        -d, --docfiles :查询指定的程序包提供的文档

        --provides:列出指定的程序包提供的所有的CAPABILITY(功能)

        -R, --requires :查询指定程序包的依赖关系

    --scripts :查看程序包自带的脚本片断


例:


wKiom1bqOe2AV34UAAAUW5VGp0U503.png

wKiom1bqOqWwvvqaAAAfgW0iF_s744.png

(5)校验: 

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

例:

wKioL1bqPDrTnkIlAAAIhu1-Xg4785.png

    对于linux来讲,没有消息就是最好的消息。

    如果出现消息请参考:

    S     file Size differs -->文件大小发生改变

    M     Mode differs (includes permissions and file type)-->权限改变

    5     digest (formerly MD5 sum) differs --> 完整性发生改变

    D     Device major/minor number mismatch --> 主次设备号不匹配

    L     readLink(2) path mismatch --> readLink路径不匹配

    U     User ownership differs --> 属主改变

    G     Group ownership differs --> 属组改变

    T     mTime differs --> 时间戳改变

    P     caPabilities differ -->功能不同

注意:

    a.安装此组织签名的程序时,会自动执行验证

    b.手动验证:rpm -K PACKAGE_FILE


(6)数据库重建

    rpm {--initdb|--rebuilddb}[--dbpath DIRECTORY][--root DIRECTORY]

        --initdb :初始化数据库,当前无任何数据库可初始化创建一个新的,当前有时不执行任何操作

        --rebuilddb:重新构建,通过读取当前系统上所有已经安装过的程序包进行重新创建

        rpm管理器数据库路径/var/lib/rpm/

        一般查询操作都是通过此处的数据库进行


4.rpm包的获取方式

(1)系统发行版的光盘或官方的文件服务器(或镜像站点)

    http://mirrors.aliyun.com

    http://mirrors.sohu.com

    http://mirrors.163.com

(2)项目的官方站点

(3)第三方组织

    EPEL:

    搜索引擎:

        http://rpmfind.net

        http://rpm.pbone.net 

        http://pkgs.org

(4)自己动手,丰衣足食