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和 是验证软件包的发行者
S file Size differs 文件大小改变
M Mode differs (includes permissions and file type) 文件权限发生改变
5 MD5 sum differs 文件的MD5发生改变
D Device major/minor number mismatch 文件的主设备号或次设备号发生改变
L readLink(2) path mismatch readlink的路径不匹配
U User ownership differs 属主发生改变
G Group ownership differs 属组发生改变
T mTime differs 最后一次修改时间发生了改变.
rpm软件包的校验,是能过rpm的软件包数据库来进行校验的,安装完软件,都会把该软件的相关信息生成到rpm的数据库,在校验的时候,跟这个数据库对比
# rpm --initdb 生成数据库(如果事先存在库,不会覆盖)
# rpm --rebuild 重建数据库(无论有没有库,都会覆盖重建)