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
下一篇 2016-11-18

相关推荐

  • vim用法详解

    vim编辑器:文本编辑器: 文本:纯文本,ASCII text;Unicode 文本编辑器种类:     行编辑器:sed     全屏编辑器:nano,vi   vi:visual interface vim:vi improv…

    Linux干货 2016-08-15
  • N22-第24周博客作业——-虚拟化技术

    虚拟化技术—基础(1) 本文围绕下面3个问题进行对虚拟化技术展开讨论: 1、虚拟化技术实现方式有哪些?虚拟化技术分哪些? 2、请分别通过kvm、xen工具来实现虚拟化系统的部署? 3、请描述openstack、kvmqemu-kv、libvirt及xen之间的关系。 虚拟化诞生和发展     1961年 IBM709…

    Linux干货 2016-10-17
  • kickstart 的使用!

    简介 1.什么是kickstart KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,…

    Linux干货 2016-11-03
  • LVS介绍

    LVS介绍     LVS是linux virtual server的简写,是服务器集群的一种负载均衡解决方案,作为netfilter的补充套件,工作于内核空间。     常见的术语 CIP:客户端ip地址 RIP:后端服务器ip地址 VIP:lvs面向客户端的ip地址 DIP:lvs面向…

    Linux干货 2017-08-04
  • 计划任务cron

        cron是一个在类Unix操作系统上的任务计划程序。它可以让用户在指定时间段周期性地运行命令或者shell脚本,通常被用在系统的自动化维护或者管理。          crontab 的基本格式是: <分钟> <小…

    Linux干货 2017-07-03
  • shell-语句总结

    shell脚本语法总结 过程式编程语言: 顺序执行 选择执行 循环执行 shell默认是顺序执行,如果有判断或循环语句则执行判断或循环。 条件判断 if     单分支         if 判断条件:then  &nb…

    Linux干货 2016-08-21