rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。
    RPM包与源码包的区别
    1、软件包分类
    源码包:C源代码包
    rpm包:编译之后的二进制包
    2、源码包
    优点:开源;可以自由选择所需功能;可看源代码;卸载方便(直接删除安装位置);
    缺点:安装步骤过多;编译时间过长;
    3、RPM包
    优点:使用简单,只需要几个命令就可以实现包的安装、升级、查询、卸载;安装速度快;
    缺点:不能看源代码;功能选择不如源代码灵活;依赖性;
    RPM包命名和依赖性
    RPM包的命名规则
    1、 httpd-2.4.6-67.el7.centos.x86_64.rpm
    httpd 软件包名
    2.4.6 软件版本
    67 软件发行的次数
    el7.centos 适合的linux平台
    x86_64 适合的硬件平台
    rpm rpm包扩展名
    2、RPM包的依赖性
    树形依赖性:a -> b -> c,即a依赖b,b依赖c
    环形依赖:a -> b -> c -> a
    rpm基本功能
    1、rpm命令用于管理程序包:
    主要 作用:安装、升级、卸载、查询、校验、数据库维护
    2、rpm具体使用方法
    ```
    (1)语法:rpm[OPTIONS] [PACKAGE_FILE] 即 rpm 【选项】【包文件】
    (2)相关选项参数命令
    安装:-i,–install
    升级:-U,–update,-F
    卸载:-e.–erase
    查询:-q —query
    校验:-V,–verify
    数据库维护:–builddb,–initdb
    3、各选项参数详解 1.2.3.

    (1)安装:rpm {-i|–install} [install-options] PACKAGE_FILE …
    rpm -ivh PACKAGE_FILE …(rpm包常规安装命令)
    GENEARL OPTIONS:综合选项
    -i:安装
    -v: 详细信息
    -vv:更加详细的信息
    -h:hash marks 输出进度条:50个#表示进度条
    –prefix :安装指定目录
    –test:测试安装,检查并报告安装是否完成 —> rpm -ivh —test PACKAGE_FILE …
    –nodeps:忽略依赖关系,不建议操作 —> rpm -ivh —nodepst PACKAGE_FILE
    –replacepkgs:重新安装rpm包 —> rpm -ivh —replacepkgs PACKAGE_FILE
    –nosignature:不检查签名信息,不检查来源合法性
    –nodigest:不检查包完整信息:
    举列: 1.2.

    [root@localhost leiyuncai]# rpm -ivh zsh- 5.0.2-14.el7.x86_64.rpm
    注意:忽略 —nodeps 依赖关系强制安装可能会导致所安装包不能够正常工作
    (2)升级 1.

    rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
    rpm {-F|–freshen} [install-options] PACKAGE_FILE …
    -U: 升级或者安装
    -F:单纯的升级,如果之前没有rpm包将无法升级
    –test:测试安装,检查并报告完成 —> rpm -Uvh —test PACKAGE_FILE …
    –nodeps:忽略依赖关系,不建议操作 —> rpm -Uvh —nodepst PACKAGE_FILE
    –replacepkgs:重新安装rpm包 —> rpm -ivh —Ueplacepkgs PACKAGE_FILE
    –oldpackage::降级操作
    –force:强制升级
    1.

    举列:[root@localhost leiyuncai]# rpm -Uvh zsh-5.0.2-14.el7.x86_64.rpm
    1.

    注意:(1)不要对内核做升级操作,Liunx支持多内核并存,直接安装新版本
    (2) 如果源程序包的配置文件安装后曾修改过,升级时,新版本的程序提供的同一配置文件不会覆盖原有版本文件,而重命名为(FILENAME,rpmnew)
    (3)卸载: 1.

    rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–test] PACKAGE_NAME …
    rpm -e 软件包名称
    -e:卸载指定程序
    -allmatches:卸载所有匹配指定名称的程序包的各个版本
    –nodeps:忽略依赖关系
    –test:测试卸载,显示依赖关系
    举列:
    [root@localhost ~]# rpm -e zsh
    (4) 查询 1.2.

    rpm {-q|–query} [select-options] [query-options]
    select-options:给指定值,一般是需要查询文件名称
    -a.all:查询所有已经安装过的包,后面一般通过管道输出至正则表达式匹配-列如: rpm -qa | grep “^z”
    -f FILE:查看指定的文件由哪个程序包安装生产:
    -p, —package PACKAGE_FILE:对于未安装的程序包执行查询操作
    –whatprovides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供
    –whatrequlres CAPABILITY:查询指定的-CAPABILITY被哪个程序包依赖
    [query-options]
    –changelog:查询rpm包的changelog; 历史
    -l —list:列出程序包安装生产的文件列表
    -i,–info:查询程序包相关的信息,包含版本、信息、时间等等
    -c,:查询程序包有哪些指定的配置文件
    -d:查询指定的程序包提供的文档信息
    –provides:列出指定程程序包的 CAPABILITY
    -R,–regulres:查询程序包依赖的包
    –scripts:查看程序包自带的脚本片断
    举列: 1.

    1.[root@localhost Packages]# rpm -qa
    #:查询所有安装的包
    2.[root@localhost Packages]# rpm -qpi httpd-devel
    #:查询未安装包的详细信息
    3.[root@localhost Packages]# rpm -qi httpd-devel
    #:查看程序包的相关信息
    4.[root@localhost Packages]# rpm -ql httpd-devel
    #:查看程序包安装产生的文件列表
    5.[root@localhost Packages]# rpm -qc zsh
    #:查看程序包的配置文件
    6.[root@localhost Packages]# rpm -qd zsh
    #:查看程序包提供的文档信息
    7.[root@localhost Packages]# rpm -qR zsh
    # :查询程序包依赖的包

    https://blog.51cto.com/u_8950428/2103427