rpm命令详解及和yum之间的关系

    RPM 全名是“ RedHat Package Manager ”简称则为 RPM 顾名思义,当初这个软件管理的机制是由 Red Hat 这家公司发展出来的。 RPM 是以一种数据库记录的方式来将你所需要的软件安装到你的 Linux 系统的一套管理机制。

    但是安装的时候必须具备的相依赖性(依赖关系)软件,当安装在你的 Linux 主机时, RPM 会先依照软件里头的数据查询Linux 主机的相依赖性软件是否满足, 若满足则予以安装,若不满足则不予安装。为了解决这种具有依赖关系软件之间的问题 ,RPM 就在提供打包的软件时,同时加入一些讯息登录的功能,这些讯息包括软件的版本、 打包软件者、相依赖关系的其他软件、本软件的功能说明、本软件的所有文件记录等等,然后在 Linux 系统上面亦创建一个 RPM 软件数据库,如此一来,当你要安装某个以 RPM 型态提供的软件时,在安装的过程中, RPM 会去检验一下数据库里面是否已经存在相关的软件了, 如果数据库显示不存在,那么这个 RPM 文件“默认”就不能安装。这个就是 RPM 类型的文件最为人所诟病的“软件的依赖关系”问题。然而这种解决方法对用户来说,并没有什么卵用。所以就有了YUM的前端处理机制,将这些相依赖的软件先列表, 在有要安装软件需求的时候,先到这个列表去找,同时与系统内已安装的软件相比较,没安装到的依赖软件就一口气同时安装起来,就解决了相依属性的问题。


    

    rpm命令:rpm 选项 压缩包

            安装:-i,–install

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

            卸载:-e,–erase

            查询: -q,–query

            校验; -V,–verify

            数据库维护:–builddb,–initdab

    安装:

            rpm {-i|–install} [install-options] PACKAGE_FILE …

            rpm -ivh package-file(一般情况下都用此格式安装)

            通用选项

            -v:详细信息

            -vv:更详细的输出

            [install-options]

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

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

            –nodeps:忽略依赖关系(不保证可用性),不建议这么做

            –replacepkgs:重新安装

            –justdb:

            注意:rpm包可以自带脚本;

                四类:–noscripts

                –nopre preinstall:安装过程开始之前预习的脚本

                –nopost postinstall:安装过程完成那个之后运行的脚本

                –nopreun prenuninstall:卸载过程真正开始执行之前运行的脚本

                –nopostun postuninstall:卸载过程完成之后运行的脚本

                –nosignature:不检查包签名信息,及不检查来源合法性警告信息

                –nodigest:不检测包完整性信息

    升级:

            rpm -U –upgrade [install-options] package_file

            rpm -F –freshen[install-options]package_file

                -u:升级或者安装

                -F:升级

                rpm -Uvh package_file

                rpm -Fvh package_file

                –oldpackage:降级;

                –force:强制升级

注意: (1)不要对内核做升级操作;linux支持多内核版本并存,因此,直接安装新版本内核;

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

       新版本的配置文件重命名(filename.rpmnew)后保留

    卸载:

            rpm -e package_name 

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

                –nodeps:忽略依赖关系

                –test:测试卸载,不真正执行

    查询:

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

                有两类选项

                [select-options]

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

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

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

            rpm -qf /etc/fstab;非常有用,可以查出文件是由哪个程序生成的

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

                –whatprivides CAPABILITY:查询指定的CAPABILITY由哪个程序包提供;

                –whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

            [query-options]

                –changelog:查询rpm包的changlog;

                -l:列出程序安装生成的所有文件列表

                -i,–info:查询程序包相关的信息,版本号,大小,所属的包组,等;

                rpm -qi 此命令用到很多

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

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

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

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

                –scripts:查看程序包自带的脚本片段

            用法:

                -qi PACKAGE,-qf file ,-ql package,-qd package

                -qpi package_file,-qpl package_file,-qpc package_file

    校验:

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

            校验后如出现如下字符及表示发生变化;

            S file Size differs(大小发生变化提示符)

            M Mode differs (includes permissions and file type)(权限发生变化提示符)

            5 digest (formerly MD5 sum) differs(MD5码发生变化)

            D Device major/minor number mismatch(版本号发生变化)

            L readLink(2) path mismatch(路径发生变化)

            U User ownership differs(属主关系发生变化)

            G Group ownership differs(属组关系发生变化)

            T mTime differs(时间戳发生变化)

            P caPabilities differ(功能发生变化)

            包来源合法性和完整性验证;

            来源合法性验证:

                数字签名:

                完整性验证:

              获取并导入信任的包制作者的密钥

              对应centos发行版来说;rpm –import /etc/pki/rpm-/RPM-GRG-KEY-CENTOS-7gpgkey_file

             (一般为/media/cdrom/RPM-GRG-KEY-CENTOS-7和/etc/pki/rpm-gpg)七系统

      验证:

             1安装此组织前签名的程序时,会自动执行验证;

             2手动验证:rpm -K PACKAGE_FILE

     数据库重建:

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

             查询操作:通过此处的数据库进行;

     获取帮助:

              centos 6:man rpm

              centos 7:man rpmdb

              rpm{–initdb|–rebuilddb}

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

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


原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/37726

(0)
M20-1马星M20-1马星
上一篇 2016-08-21 20:47
下一篇 2016-08-21 20:47

相关推荐

  • 快速运用NFS共享web页面

    环境:centos7.3最小化三台,前期准备关闭防火墙和selinux 目的:通过文件共享,使客户端访问web服务器时是同样的页面。 拓扑图: 优势:减少WEB服务器的压力。 一、安装软件 NFS、WEB1、WEB2: #yum install nfs-utils -y WEB1、WEB2: #yum install httpd -y 二、配置 NFS: #…

    2017-04-27
  • 无插件Vim编程技巧

    相信大家看过《简明Vim教程》也玩了《Vim大冒险》的游戏了,相信大家对Vim都有一个好的入门了。我在这里把我日常用Vim编程的一些技巧列出来给大家看看,希望对大家有用,另外,也是一个抛砖引玉的过程,也希望大家把你们的技巧跟贴一下,我会更新到这篇文章中。另外,这篇文章里的这些技巧全都是vim原生态的,不需要你安装什么插件。我的Vim的版本是7.2。 浏览代码…

    Linux干货 2015-04-01
  • Linux上文件管理命令、元素据及时间戳、bash的工作特性回显和命令展开、定义别名,命令引用。

    文件管理命令: mkdir 创建空目录 语法: mkdir [选项]…目录… 选项: -P:逐层创建目录。 -v:显示过程。 -m:直接给定权限。 注意:路径的基名为命令作用对象。基名路径必须存在。 示例 创建/tmp/x1/a/a1和/tmp/x1/b rmdir 移除空目录 语法 rmdir [选项]…目录&#8230…

    Linux干货 2017-12-10
  • ubuntu kylin虚拟机安装KVM

    1.确定物理机CPU是否支持虚拟化    查看方法1:计算机->属性->处理器(Inter(R) Core(TM) i5-2450M),然后去网上查看自己的电脑CPU是否支持虚拟化,    地址http://ark.intel.com/zh-cn/找到自己CPU的信息,虚拟化技术后是否显示为yes,如果是n…

    Linux干货 2016-10-15
  • grep、egrep、fgrep命令和正则表达式用法

    一、简介  1.1、grep说明    grep命令简单来说就是linux系统实现文本内容筛选过滤的命令。当我们需要快速定位查找文本(通常是配置文件)中我们需要的内容时,使用grep命令绝对算是最有效的处理方式之一。原因就在于grep可以配合包括“管道”、“正则表达式”等命令完成我们想要的关键字筛选过滤功能。个人认为不管是喜欢L…

    Linux干货 2015-08-31
  • 利用 yum 查找某个命令属于哪个包

    当我们在安装一个不熟悉的命令是,会遇到个问题:Error: Nothing to do 而你又不知道该命令的是属于哪个rom包,莫慌~我们可以借助一个叫yum的基于rpm的软件包管理器。 以 dig 这个命令为例,当我安装它时会出现如下情况  [root@localhost ~]# yum install dig  Loaded plug…

    Linux干货 2016-03-27

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-22 09:52

    软件包管理工具中rpm工具中的查询选项是比较常用的,而yum仓库的配置是一个基本技能,文章确实一笔带过,未深入介绍。