RedHat及其衍生版如CentOS,Fedora都是以RPM为其软件管理工具,YUM是RPM的前端管理工具,可自动解决软件间的依赖关系,是一种线上升级工具。本文先来谈谈RPM的相关使用说明。


RPM(RedHat Package Manager)是以一种数据库记录的方式来将所需要的软件安装到Linux系统的一套管理机制。rpm是操作RPM的主要命令,而.rpm是RPM文件使用的扩展名。


rpm包的格式通常为:name-version-release.arch.rpm

即:软件名称-版本号-发行号.硬件平台.扩展名



1. RPM包的安装,升级,清除

# rpm OPTIONS /PATH/TO/RPM_FILE

-i: install 安装

-U: upgrade 若软件没有安装过,则系统将予以直接安装;若软件有安装过旧版,则系统自动升级至新版;

-F: freshen只升级安装过的软件。

-e: erase清除一个包,-e 后可只加包名

-v, -vv, -vvv: 显示详细信息, v越多越详细。

-h: 以#来显示安装进度,一个#表示2%的进度

此外还有一些rpm安装时常用的选项与参数说明:

--nodeps:忽略依赖关系,强迫安装。

--test:测试一下该软件是否可以被安装到当前的Linux 环境当中。

--replacepkgs:重新安装某个已经安装过的软件

--rebuilddb: 重建数据库/var/lib/rpm

--initdb: 新建数据库/var/lib/rpm


2. RPM包的查询

# rpm -q|--query RPM_FILE

常用选项与参数:

-q: 仅查询软件包是否安装

-qa: all, 查询所有已经安装的包

-qi: information, 查询包的摘要信息

-ql: list, 查询包安装生成的文件清单

-qc: 查询包安装生成的配置文件, 即在/etc/下的配置文件

-qd: 查询包安装生成的帮助文档,即与man有关的文件

-qf /path/to/some_file: 查询某文件是由哪个rpm安装生成的

-q --scripts查询包相关的脚本

注意:在查询本机上面的 RPM 软件相关资讯时, 不需要加上版本的名称,只要加上软件名称即可。但是查询某个 RPM 文件就必须要列出整个文件的完整档名。


3. RPM包的校验

# rpm –V RPM_FILE

可用于检查已安装的文件的完整性。

常用选项与参数:

-V: Verify,后面加的是软件包名称,若该软件所含的文件被更动过,才会列出来;

-Va:列出目前系统上面所有可能被更动过的文件;

-Vp:后面加的是文件名称,列出该软件内可能被更动过的文件;

-Vf:列出某个文件是否被更动过

例如:下图的结果是什么意思呢?

clip_p_w_picpath002

上图文件名前的c代表的是“Config file”的意思,也就是文件的类型,文件类型有底下这几类:

c:配置档 (config file)

d:文件数据档 (documentation)

g:鬼文件,通常是该文件不被某个软件所包含,较少发生。(ghost file)

l:授权文件 (license file)

r:读我文件 (read me)

最前面的八个信息是:

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) 文件的创建时间已被改变

如果当一个配置档所有的资讯都被更动过,那么它的显示就会是:

SM5DLUGT c filename