1.什么是RPM

    RPM Package Manager(RPM)是一个开放式的包管理系统,它既可以运行于RHEL系统,也可以运行于其他Linux或Unix系统。
1.1 RPM包的命名方式一般为:
            zip-3.0-1.el6.i686.rpm
            package name         zip
            version             3.0
            release             1
            major version         el6
            CPU architecture     i686
2.安装,升级,刷新和卸载
       rpm {-i|--install} [install-options] PACKAGE_FILE ...
            安装一个包
       rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...    
            升级一个包到最新的版本,或者安装一个包
       rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
            刷新一个包到最新版本,同-U,但包必须先被安装在系统上才会执行
            rpm -Fvh *.rpm         升级所有已经安装的包

 2.1    安装时加入-v可以获得更多信息,加入-h使用哈希符号显示进度表,所以它们组合起来是这样的

[root@localhost ~]# rpm -Uvh createrepo-0.9.9-18.el6.noarch.rpm

warning: createrepo-0.9.9-18.el6.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Preparing...                ########################################### [100%]
   1:createrepo             ########################################### [100%]
   
notice:Linux提供了两个可以安装包的选项(-U & -i),-U选项包含了安装和升级,所以推荐使用-U选项,但
在安装内核时,请使用-i选项,因为-U升级完成后会删除旧内核,如果升级完成之后的内核无法使用则会造成系统故障
未解决的依赖关系
    RPM安装包有时会依赖于其它安装包,这时需要被依赖包安装才能正确运行

列如:

[root@localhost ~]# rpm -Uvh nginx-1.0.15-12.el6.i686.rpm

warning: nginx-1.0.15-12.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
error: Failed dependencies:
    GeoIP is needed by nginx-1.0.15-12.el6.i686
    gd is needed by nginx-1.0.15-12.el6.i686
    libGeoIP.so.1 is needed by nginx-1.0.15-12.el6.i686
    libgd.so.2 is needed by nginx-1.0.15-12.el6.i686
    nginx-filesystem is needed by nginx-1.0.15-12.el6.i686
    nginx-filesystem = 1.0.15-12.el6 is needed by nginx-1.0.15-12.el6.i686

notice:如果想nginx包安装,这时有两个方法:

    方法1:
        安装对应的RPM包,解决依赖关系
    方法2:
        使用--nodeps选项忽略依赖关系(虽然可以安装,但可能导致程序运行不正常)
        rpm -Uvh --nodeps nginx-1.0.15-12.el6.i686.rpm
配置文件被更改
    当您升级一个包时,可能会出现一下的信息,
    saving /etc/ntp.conf as /etc/ntp.conf.rpmsave
    这是因为您对旧版本程序配置文件修改不能被新版本兼容,因此RPM保存了之前修改的文件,并
    安装了一个新的
2.2 卸载
    rpm -e nginx
    #卸载时使用包名,而不是包的全部名称
3.查询,校验及RPM数据库管理
 rpm {-q|--query} [select-options] [query-options]
    -q <Package_Name>    对某包进行查询
    -p <Package_Name>    对未安装的包进行查询
    -a                     在所有已被安装的包中查询
    -f <File_Name>        查询文件被哪个包拥有
        下列选项用于选择指定查询哪些信息
            -i 显示某包的详细信息
            -l 显示某包中的所有文件
            -d 显示某包的说明文档
            -c 显示某包的配置文件
例:
    rpm -qpi <Package_File>     查询一个尚未安装包的详细信息
    rpm -ql <Package_Name>         查询某个已被安装包生成的文件列表
3.1  校验
    rpm -V <package_name>        
    用于检查安装生成的文件属性是否发生变化,主要描述有
    5        MD5检查
    S        文件大小
    L        符号链接
    T         文件修改时间
    D         设备
    U         用户
    G         组
    M         权限
    ?        不可理解文件(文件权限错误)
    .        没有发生改变
    
3.2 检查包的数字签名
    校验RPM包必须先要导入GunPG key     
    [root@localhost ~]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-6
    显示所有已经导入的GunPG key
    [root@localhost ~]# rpm -qa gpg-pubkey*
    gpg-pubkey-c105b9de-4e0fd3a3
    想要显示key的详细信息
    [root@localhost ~]# rpm -qi gpg-pubkey-c105b9de-4e0fd3a3
    对包进行数字签名检查
    [root@localhost Packages]# rpm -K zip-3.0-1.el6.i686.rpm
    zip-3.0-1.el6.i686.rpm: rsa sha1 (md5) pgp md5 OK

3.3  RPM数据库管理

    RPM所有查询功能都是基于数据库的

    #数据库目录为/var/lib/rpm

        rpm --initdb            #初始化,如果没有则新建,有则不执行

        rpm --rebuilddb            #数据库重建,覆盖原有

参考文档:

                Red_Hat_Enterprise_Linux-6-Deployment_Guide-en-US