1. rpm包的命名规则

     name-version-release.arch.rpm

version的命名规则: major.minor.release

release的命名规则: 通常包含rpm的制作发行号,以及使用的OS。例:bash-4.3.2-2.el6.x86_64.rpm

OS平台举例:

el6:redhat enterprise linux 6

el5:redhat enterprise linux 5

CentOS6

CentOS5

SUSE11

arch举例:

x86_64, i386, i486, i586, x86, ppc

noarch :表示所有体系架构都通用


2.  rpm包的安装

rpm –i /path/to/rpm_package

-h  以#的个数显示安装进度

-v  显示安装的信息

--test  仅测试,不执行真正的安装

--nodeps  忽略包的依赖关系。例: rpm –i –nodeps /tmp/foo.rpm。

--force      强制执行。

--replacepkgs  重新安装。原来的配置文件不会被覆盖,新安装的配置文件将会重命名为以.rpmnew为后缀的文件。例: rpm –i –replacepkgs /tmp/foo.rpm


3.  rpm包的卸载

rpm –e package_name

如果有其它的已安装的包依赖该卸载的包,默认情况下,会同时卸载这些安装包。如果想避免这种情况,可以使用 –nodeps 忽略这种依赖关系。


4.  rpm包的查询

rpm –q packeage_name    查询指定包名的rpm包是否安装。另外,可以和下面的任意一个选项组合使用,实现不同的查询功能。

-a      查询所有已安装的rpm包

-l      查询rpm包安装的所有文件路径列表

-i      查询rpm包的描述信息

-f  /path/to/file      查询指定文件是哪个rpm包所安装生成的。

-c      查询包安装后生成的配置文件。

-d      查询包安装后生成的帮助文档。

--scripts      查询rpm包相关的脚本。4类脚本: preinstall, postinstall, preuninstall, postuninstall.

rpm –qp /path/to/package_file       查询尚未安装的rpm包文件的相关信息。和上面的某些选项再组合使用,实现对应的查询功能。即在rpm包不安装的情况下,提供该包安装后一样的各种查询需求。举例:

rpm –qpl  /path/to/package_file      查询安装后会生成的文件列表。

rpm –qpi  /path/to/package_file       查询安装包的描述信息。


5.  rpm包的升级

rpm –U  /path/to/package_file  安装或升级指定的安装包

rpm –F /path/to/package_file    升级指定的安装包

升级和安装一样,也支持 -v -h --nodeps --force 选项组合使用,含义也一样。另外,对内核不要执行升级操作。因为多版本内核可并存,所以建议执行安装操作!


6.  rpm包的校验

rpm –V package_name       检查包安装后生成的文件是否被修改过。主要检查9个方面的异同,如文件大小,文件权限,MD5,设备版本号,文件属主,文件属组,文件修改时间等。如果未被修改,就用’.’表示,如果被修改过,就在对应的位置以对应的字符标示。举例:

# rpm -V curl

S.5....T.  d /usr/share/doc/curl-7.19.7/README       属于curl包的安装文件README的文件大小,MD5值和文件修改时间都被改变过了!


7.  rpm包来源合法性和完整性检验

rpm –K /path/to/package_file    检查指定包文件的来源合法性和完整性

--nosignnature    不检查来源合法性

--nodigest      不检查完整性

另外,导入制作者的公钥,可以使用如下命令。比如,导入CentOS发行版的光盘中的pgp公钥文件:

rpm –import  /path/to/gpg-key-file


8.  rpm包管理器的数据库重建

rpm包管理器的数据库在:/var/lib/rpm/

rpm --initdb  初始化包管理器的数据库。若不存在数据库,则新建之。

rpm –rebuilddb  直接重建数据库,会覆盖原有的库。