rpm包管理

rpm包管理

rpm(RedHat Package Manager) 是RedHat公司发展的一种将软件安装到Linux系统的管理机制,也是一种数据库记录方法。

Linux系统上软件的安装主要分两种方式,从厂商发布的tarball通过编译来安装;或者使用厂商已经在相应平台上编译好的二进制文件。

从源码编译安装的程序,在漏洞修补以及软件功能升级时太过麻烦,并且管理员不能清晰地知道系统上已经安装了哪些软件,以及相应的版本等摘要信息。

Linux发行商或者社区组织在固定的硬件平台与操作系统上将需要安装的软件编译好,然后将编译好的软件与相关文件打包成一个特殊格式的文件。此特殊文件中包含了预先检测系统与依赖关系的脚本,并提供该软件的文件信息。用户取得该软件后,通过特殊的命令安装,首先会根据内部的脚本来检测该软件所依赖的前驱软件是否存在,若安装环境复合,就开始安装。安装完成后还会将该软件的信息写入软件管理机制,以备将来进行升级、移除等动作。目前在Linux界软件安装方式最常见的有以下两种:

  • dpkg,由Debian Linux社群开发,目前Debian系的Linux发行版大多使用dpkg机制来管理软件,例如Ubuntu。

  • rpm, 由Red Hat公司开发,目前Fedora、CentOs、SuSE等发行版都使用该机制。

需要注意的是:因为rpm文件是已经编译好的二进制文件,所以在使用时,硬件平台和系统必须和编译时一致。如果要用其他发行版提供的rpm软件,可以下载srpm,也即某一rpm软件对应的源码(*.src.rpm命名),在使用srpm安装软件时,首先需要以rpm管理方式编译程rpm文件,然后将编译后的rpm包依照rpm包的安装方法安装至系统。

rpm包管理命令

  • rpm包安装

只有root用户有权限管理rpm包

rpm -ivh pkgs_name
    -i 安装
    -v 显示详细信息
    -h 显示安装进度
        pkgs_name 可以是单个或多个rpm包文件名,也可以是rpm包路径(如果可以连入互联网的话,也可以是软件包的互联网地址)

此外rpm包在安装时,还额外提供安装选项可供选择使用

--nodeps 忽略软件安装所需要考虑的依赖关系问题
--replacepkgs 重新安装
--test 测试某rpm包安装到环境中,是否有依赖关系问题
--prefix /path/to/somewhere 执行新的安装路径
--nosignature 不检查包签名信息,不检查包来源的合法性
--nodigest 不检查包的完整性
--no[pre|post|preun|postun] 选择安装或卸载前后不执行安装包自带脚本
  • rpm包卸载

rpm包卸载时应注意依赖关系问题

rpm -e program_name
rpm -e --nodeps program_name 强制卸载,会影响依赖此软件的软件的正常使用

rpm包的安装、移除以及升级操作有时误操作可能会导致rpm数据库/var/lib/rpm内的文件损坏,可以使用–rebuilddb 来重建rpm数据库

rpm --rebuilddb 
rpm --initdb 初始化数据库
  • rpm包查询

rpm查询操作,其实查询的/var/lib/rpm/目录下的数据库文件。此外也可以查询系统上未安装的rpm包的相关信息

rpm -q program_name 确认相应软件是否已被安装
    -qa 列出系统上所有软件名称
    -qi 列出软件的相关信息
    -ql 列出软件安装所生成的文件
    -qc 指出软件的配置文件
    -qd 列出软件包提供的文档
    -qR 列出该软件所依赖的软件
    --whatrequites capability 查询指定capability被哪些软件所依赖
    -qf /path/to/file 查询指定文件为哪个软件安装所产生的
    -qp[idclR] 查询某个rpm文件内的信息,并非已安装的软件的信息
    --whatprovides capability 查询指定capability由那个软件所提供
    --script 查询rpm程序包自带的脚本
  • rpm安装程序升级

升级rpm包安装的程序

rpm -Uvh program_name 如果该软件并未被安装则会自动安装
rpm -Fvh program_name 如果系统上并没有该软件,则不会执行相应操作
  • rpm安装程序校验

校验rpm安装程序是否被篡改过,一般configure文件在使用过程中可能被修改,但binary program被修改就需要特别注意

rpm -V program_name 检查软件所属的文件是否被修改过
    -Va 列出系统上rpm包安装的程序所属的文件中所有被修改过的
    -Vp 后跟rpm包文件名,列出对应的安装程序中被修改过的文件
    -Vf 检查某个文件是被修改过

    SM5DLUGT c filename

    S :(file Size differs) 文件的容量大小是否被改变
    M :(Mode differs) 文件的类型或文件的属性 (rwx) 是否被改变?如是否可运行等参数已被改变
    5 :(MD5 sum differs) MD5 这一种指纹码的内容已经不同
    D :(Device major/minor number mis-match) 装置的主/次代码已经改变
    L :(readLink(2) path mis-match) Link 路径已被改变
    U :(User ownership differs) 文件的所属人已被改变
    G :(Group ownership differs) 文件的所属群组已被改变
    T :(mTime differs) 文件的创建时间已被改变

    c :配置档 (config file)
    d :文件数据档 (documentation)
    g :鬼文件~通常是该文件不被某个软件所包含,较少发生!(ghost file)
    l :授权文件 (license file)
    r :读我文件 (read me)
  • rpm包来源合法性和完整性验证

首先安装rpm包发行组织释出的公钥;每次安装rpm包时,rpm命令会读取rpm包文件的签名,并与公钥比对;如果相同则顺利安装,如果不同则停止安装(-ivh –signature 选项也是针对此处)。

rpm --import /path/to/public-key 导入公钥
rpm -qi `rpm -qa | grep pubkey` 查看已导入的公钥信息

原创文章,作者:N24_fynl,如若转载,请注明出处:http://www.178linux.com/60025

(0)
N24_fynlN24_fynl
上一篇 2016-11-18 20:20
下一篇 2016-11-18 22:58

相关推荐

  • 系统基础之用户,组及权限管理

    用户及组详解 概论:   现今,大多数操作系统都是多用户(Multi-tasks)多任务(Mulit-Users)的系统.在多年前,计算机资源远没有现在这么丰富,都是多人使用同一台计算机,为了保障使用计算机的用户权益不受到损害,完成资源使用隔离,人们采取了用户机制标识使用者的方法.  每个使用者都是用户,用户是由UID进行标识,通过密码进…

    Linux干货 2016-08-04
  • 开机启动流程

    Centos的开机启动流程 具体步骤解释:  第一步:加电自检:POST         加电自检是检测硬件设备是否正常运行,以及一些外围设备的输入输出是否存在。 自检功能的实现是依靠BIOS软件程序实现的 BIOS即基本输入输出系统,它是装载在一个硬件芯片COMS上的,加电过程…

    Linux干货 2016-09-13
  • Mariadb数据库复制系列(四):复制过滤器的实现

       实验四:复制过滤器的实现 复制过滤器的作用是让从节点仅复制主节点的指定的库,或指定数据库的指定表,而不是全部复制。其配置方式有两种,一种是在主节点上配置,通过定义主节点只记录部分库或表产生的二进制日志时间来实现;一种是通过从节点上配置,当复制了主节点的所有的二进制日志数据后,在SQL线程执行时,只执行指定的库或表相关的二进制日志时间;一般采取在从节点上…

    Linux干货 2016-11-24
  • 使用monit搭建一个监控系统

     上周用monit搭建或者说定制了一个监控系统,来监控服务器发生事情。当然了主要是监控异常,因为我们的产品属于服务器类型,很多进程都daemon,要不停的运行。我们搭建监控目的不过是出现问题能够及时的知道,平时可从web UI上看到整个系统的状况,同时它本身要轻量级,不要影响性能。当然了类似的产品很多了,比如Ganglia,我在老科长波哥曾经搭建过…

    Linux干货 2015-02-15
  • 第十四周 N21 总有刁民想害朕

    系统的INPUT和OUTPUT默认策略为DROP; 1、限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机;  iptables -A  INPUT -p tcp –dpor…

    Linux干货 2016-10-17
  • Hello word!

    初识linux

    2018-03-26