rpm命令解析
    rpm是redhat(红帽)公司开发的一个包管理器,专门用于管理rpm安装包的。
        rpm名字解析:
原为:redhat package manager
现为:RPM is Package Manager
                rpm是现在linux的工业级标准
    包管理器的功能:
打包、安装、卸载、升级、校验、数据库管理
    
    rpm优缺点:
        安装方便,相对于古老的为编译方式。
        还是不能直接解决依赖关系,如果碰到需要依赖关系的程序,要一个一个依赖包都转起来
    rpm包源代码命名:
name-version.tar.{gz,bz2,xz}
rpm包的命名格式
        name-version-relase.arch.rpm
             version:major.minor.release,同源代码,跟源代码的version一样
release:
rpm自身的发行号,与程序源代码的发行号无关,仅用于表示对rpm包不同制作的修订;
                    同时,release还包含此包适用的OS
                        例如:bash-4.2.3-3.centos5
             arch:适用于的硬件平台
X86:i386,i486,i586,i686等,不用的86表示支持不通可能较新兼容性更好,
可以使用32位更新的特性
                X86_64:x86_64
                powerpc:pcc
noarch:依赖于虚拟机
例如:bash-4.2.3-3.centos5.x86_64.rpm
         一个程序有20个功能:常用功能有8个,特殊场景A:3个,特殊场景B:6个,二次开发相关功能:3个
                分包机制:
核心包(主包):
例如:
主包命名与源程序一致
bash-4.2.3-3.centos7.x86_64.rpm
                            子包:bash-a-4.2.3-3.centos7.x86_64.rpm
                                 bash-b-4.2.3-3.centos7.x86_64.rpm
bash-devel-4.2.3-3.centos7.x86_64.rpm
  安装程序包:
格式:rpm [option] /path/to/package_file
         -i:install,安装
        -v:显示安装信息
        -vv:显示更详细的安装信息
        -vvv:显示更加详细的安装信息
        -h:显示安装进度
            组合选项:-ivh
        --test:仅作测试,没有真正执行安装,检测安装是否正常
            如果依赖于其他包:
               1、解决依赖关系
               2、忽略依赖关系,能装上,但有可能无法运行
                    --nodeps:表示忽略依赖关系
       重新安装:
           --replacepkgs:替换上次原有的安装包
              重新安装时,如果原有的配置文件做了修改,很有可能不执行替换,而是将安装应该生成的配置文件重命名为.rpmnew
   卸载程序包:
      格式:rpm [option] package_name
         -e:erase,擦除,卸载
              如果被其他包所依赖:
               1、将依赖于此包的所有包一并卸载
                2、忽略依赖关系
                 能卸载,但依赖于此包的程序包可能会运行不正常
                    --nodeps:表示忽略依赖关系
               如果包的配置文件安装后曾被改动过,卸载时,此文件将不会被卸载,而是被重命名并保留
                   例如: warning:/etc/zprofile saved as /etc/zprofile.rpmsave
   升级程序包:
        新版本替换老版本
格式:rpm [option] /path/to/package_file
1、升级或安装,有老版本就替换升级,没有就安装
-U:组合Uvh
2、纯升级,一定要有老版本
-F:组合Fvh
              升级也有依赖关系,升级后的版本可能会有冲突:
                --force:强制升级
                    注意:不应该对内核执行升级操作,而是安装
                        Linux系统允许多内核并存,如果升级了Linux,启动Linux的时候会崩溃
    查询操作:
      1、查询某包是否安装
格式:rpm -q package_name...
                一次可以查询多个,各个包之间用空格隔开
      2、查询所有已经安装的包
            rpm -qa
              按条件过滤:rpm -qa | grep ‘PATTERN‘
       3、查询包的描述信息
              rpm -qi package_name
       4、查询某包安装生成了哪些文件
              rpm -ql package_name
            (1)查询某包安装生成了哪些配置文件:rpm -qc package_name
                   (2)查询某包安装生成了哪些帮助文档:rpm -qd package_name
                   (3)查询程序包的相关脚本:rpm -q --scripts package_name
                        脚本有四类:
                            preinstall:安装前脚本
                            postinstall:安装后脚本
                            preuninstall:卸载前脚本
                            postuninstall:卸载后脚本
       5、查询某文件是由哪个包安装生成的
rpm -qf /path/to/some_file
    数据库重建:
        数据库目录:/var/lib/rpm
           数据库包含了:程序的各个数据,有安装目录,文件大小,key等
        重建:
         1、rpm --initdb:初始化
             如果事先没有库,会新建一个,如果有,则不新建
         2、rpm --rebuilddb:重建
直接重建,覆盖原有的数据库
原文:http://kmk0226.blog.51cto.com/5975994/1662523