redhat系统光盘中,自带了大量的以rpm结尾的软件包,我们称之为rpm包或者叫作二进制包,与二进制包相对的,还有源码包.

二进制包的安装比较简单,可以直接使用rpm命令加参数来完成软件包的管理,安装,卸载,升级与签名验证等.但是也可能会比较麻烦,因为可能存在依赖关系,当我们要安装软件包A的时候,A包可以依赖于软件包B,我们又要安装B的时候,B又依赖于软件包C,安装C的时候,C又需要安装B等,如果存在这样的依赖关系,解决起来,是比较让人头疼的.好在在RMP之后,又出现了YUM这个好用的工具,本次先不说YUM和软件包的依赖关系,先简单说一下RPM

RPM:Redhat Package Manage OR RPM Package Manager,我也不知道是哪一个名字更准确,呵呵.

 

我们看一下rpm软件包的命令方式.

命令方式:name-version-Release.OS.arch.rpm
例:yum-updateonboot-1.1.16-13.el5.noarch.rpm
其中各字段的意思如下.
name 软件包的名字
Version 主版本号,次版本号,修订号
Release 发行号
OS 操作系统
arch 平台
 
rpm管理软件包管理:
 安装
 rpm -i
 rpm -ivh(v越多,显示信息越详细,最多支持3个V.h显示进度条的,一个#代表2%)
 rpm -ivh --nodeps强制安装,忽略依赖关系 --force 强制安装
 卸载
 rpm -e
 rpm -e --nodeps
 升级
 rpm -Uvh
 U如果要升级的软件包没安装,那么则安装
 rpm -Fvh
 F如果要升级的软件包没安装,则升级不了.
 查询
 rpm -q
 p 查询软件包安装完成后的相关信息,用于查询还没安装的软件包.如 rpm -qpl 查询软件包安装完成后,将生成哪些文件.一般要结合以下子参数来查找指定软件包的相关信息.
 a 查询所有软件包
 i 查询软件包的摘要信息(作者,平台等)
 l 查询软件包安装完成后,生成了哪些文件
 c 只显示软件包的配置文件
 d 只显示软件包的文档
 f 查询指定文件是由哪些软件包生成的.
 --scripts 显示软件包安装完成后,执行了哪些脚本.
 --changelog 显示软件包的升级新增功能.
 校验
 rpm -V
 rpm -K 验证软件包的签名
 --nodigest
 --nosignature

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 导入redhat的公钥,检验是根据公钥来进行的,我们安装redhat光盘上的软件包的时候,就要用到redhat的公钥来进行检验.如果安装别人制作的软件包, 就要用制作人的公钥来进行检验.

sha1和md5是验证数据包的完整性,软件包没有被修改过

dsa和 是验证软件包的发行者

文件大小改变

       M Mode differs (includes permissions and file type) 文件权限发生改变

文件的MD5发生改变

文件的主设备号或次设备号发生改变

readlink的路径不匹配

属主发生改变

属组发生改变

最后一次修改时间发生了改变.

 

rpm软件包的校验,是能过rpm的软件包数据库来进行校验的,安装完软件,都会把该软件的相关信息生成到rpm的数据库,在校验的时候,跟这个数据库对比

 

# rpm --initdb 生成数据库(如果事先存在库,不会覆盖)
# rpm --rebuild  重建数据库(无论有没有库,都会覆盖重建)


https://blog.51cto.com/gm100861/787826