rpm程序包管理器的功能,把编译好的的程序打包好,可以是一个或几个。这包可以用来安装,升级,降级,卸载,查询,校验,包数据库管理等功能 。尽管rpm比起源代码安装要简单不少,但还是有依赖关系这种头疼的问题。为了解决这种问题就有了yum(ubuntu的apt-get)。rpm把源代码做成rpm包时一般会用分包机制,把每个功能打成一个包,一般为一个主包和几个子包组成,子包依赖主包。为程序提供一个统一安装管理的功能。包组成内容:

       1,数据库

                程序名称和版本,升级与降级用的到,

                依赖关系,此软件包依赖其它那些软件包。

                功能性说明摘要

                安装生成的各个文件路径及文件的校验码。

        2,程序组成清单

                文件清单

                安装卸载时运行的脚本,如此程序使用某个用户身份运行,安装时需要创建用户,卸载时删除用户。用本有四种

                        安装前脚本,安装后脚本,卸载前脚本,卸载后脚本。


rpm命令格式:程序名-版本号.tar.{gz,bz2,xz},版本号分依次为:主版本号-次版本号-发行号。子包一般用功能性描述出来。


rpm包获取途径有,系统安装光盘,发行版的主页,镜像站如http://mirrors.163.com  http://mirrors.sohu.com。 软件项目的官网,第三个机构或个人,如fedora的epel。如http://rpmfind.net和http://rpm.pbone.net


rpm rpm程序安装命令 
-i 安装,install。后面跟上rpm包名 
-e 卸载,后面跟上程序名。卸载时也会有依赖关系。 
如果有依赖关系有两种方法,1,将依赖此程序包的其它程序一并卸载。2忽略依赖关系。有可能依赖此程序包的程序运行不正常。 
如果安装后被改动过,卸载时不会卸载,而是被重命名保留。 

-v 显示详细信息 
-vv 显示更详细的信息 
-vvv 显示更更详细的信息 
-h 使用#显示安装进度,第个#为百分之二的进度 
--test 测试下rpm包是否能安装。只做测试不会真正安装。 
--nodeps 忽略依赖关系 
如果出现依赖关系,要么把依赖的包装上,要么忽略依赖关系,但这样比较不可靠,有可能导致所安装的软件无法运行
-replacepks 重新覆盖安装之前安装程序。重新安装时,如果原有的配置文件做了修改时,很有可能不做替换,而是将该这个程序生新的配置文件重命名为.rpmnew结尾的文件。需要重新命名。 

-U 升级或安装,升级是把老版删除而安装新版。如果没有安装老程序,则安装。 
-f 纯升级,如果之前没有安装这个程序,则不会安装 
--force 强制升级。可能会导致其它依赖此程序包的软件不正常运行。内核应该安装,不应该升级。 
-q 查询某包是否安装,q后面跟上软件包名,可以一次查询多个,以空格隔开。 
-qa 查询所有已经安装的包 
-qi 查询已安装包的功能描述信息 
-ql 查询某个安装包,安装后生成了那些文件。ql后面要加上程序包名。 
-qc 查询某个包安装后生成了那些配置文件 
-qd 查询某个包安装后生成了那些帮助文件 
-q --scripts 查询某个包相关的脚本。后面要跟包名。 

-qf 查询某个文件是由那个包生成的。后面跟上要查询的文件路径。 
-p 查询某个没有安装的包安装后的相关系统,后面要跟上包的名称。 
常用几个组合 
-qpi 
-qpl 
-qpc 
-qpd 
-V 校验,检测包安装后文件属性是否发生变化,比如某个包安装后配置文件没有修改过。后面跟上包名 

来源合法性,我完整性检验。前题需要在当前系统上导入发行制作都的公钥。 
--import 导入公钥,后面跟上公钥名称。可以导入多入公钥。 
rpm -qa gpg-pubkey* 显示已经导入的公钥。 
rpm -qi 显示某个密钥的详细信息,后面跟上密钥名。 
-K 查检包的完整性,安装时会自动检查。后面跟上包的名称。做检查前需要导入密钥。 
-K --nodigest 不检查包完整性 
-K --nosignature 不检查包来源合法性 

rpm数据库目录在/var/lib/rpm,如果损坏可以重建,方法有两种 
rpm --initdb 初始化,如果事先没有库会新建一个,如果有则不执行此命令。 
rpm --rebuilddb 重建,直接覆盖原有的数据库。