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

相关推荐

  • 用户管理生产环境实践案例

    关于用户管理的命令回顾:visudo 用户管理生产环境实践案例 1. 关于用户管理命令的回顾 2. 正文 关于用户管理的命令回顾: <1> useradd命令 <2> 其他命令 (1)信息收集 (2)模拟用户测试 <1> 问题现状 <2> 需求分析 <3> 实现方针 <4>. 实施过程 …

    Linux干货 2016-10-18
  • Mozart的剑(文本处理工具)——叁剑(grep、正则表达式)

    之前的句子 烟锁池塘柳 炮镇海城楼 因荷而得藕 有杏不需梅 认识于小林寒风的一篇小说《凤山遗梦》 grep grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行。模式:由正则表达式字符及文本字符所编写的过滤条件 用法: grep [OPTIO…

    2017-08-03
  • N25_第三周作业_leon

    N25_第三周作业_leon 1.       列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who 全部 jj       tty1  …

    Linux干货 2017-01-06
  • 文本处理三剑客之grep及正则表达式

    文本处理三剑客之grep及正则表达式   文本处理工具:   Linux上处理文本三剑客:     Grep:文本过滤器工具(模式:pattern)工具;     Sed: stream editor,流编辑器;文本编辑工具;   &nbs…

    Linux干货 2016-08-12
  • 磁盘管理(SWAP、dd、quota、RAID、LVM)

    2016-08-26: 授课内容: 1、SWAP交换分区的创建 2、dd命令的使用 3、设定文件系统配额 4、设定和管理软RAID设备 5、配置逻辑卷、逻辑卷快照 1、swap (1)SWAP分区:模拟内存,当物理内存不足时,进程需要内存资源是,内存会把一部分没有在用的进程分页挪到硬盘的模拟内存中,腾出空间被现在需要使用内存资源的进程 即其作用是可以允许内存…

    Linux干货 2016-09-01
  • 网络管理(三)之路由设置、网络组

    网络管理(三)之路由设置、网络组 一、网卡名称: 1、网络接口的识别命名udev配置文件:#vim /etc/udev/rules.d/70-persistent-net.rules 2、网卡查看:#dmesg | grep -i eth 或者#ethtool -i eth0            …

    Linux干货 2016-09-08