小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
介绍
RPM 的全称为 RedHat Package Manager,作为一个开放标准,它是 RedHat linux、CentOS、OpenLinux、S.u.S.E. 及 Turbo Linux 等众多linux发行版采用的软件包管理方式。
RPM是以一种数据库记录的方式将所需要的软件安装到Linux主机的一套管理程序。最大的特点是将要安装的软件先编译并打包,通过打包好的软件中默认的数据库记录(配置参数),记录这个软件在安装的时候需要的依赖属性模块。
在Linux主机安装时,RPM会先根据软件里的记录数据,查询Linux主机的依赖属性软件是否满足,若满足则予以安装,不满足则不安装。安装的时候将该软件的信息全部写入RPM的数据库中以便将来的查询、验证与卸载。
rpm软件安装流程:
rpm的功能
rpm提供以下的功能:
-
安装、删除、升级和管理软件;当然也支持在线安装和升级软件;
-
通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包;
-
可以查询系统中的软件包是否安装以及其版本;
-
作为开发者可以把自己的程序打包为 RPM 包发布;
-
软件包签名GPG和MD5的导入、验证和签名发布
-
依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统;
GPG是一个加密软件,开源免费非常著名。
RPM的优点和缺点
- 优点
- 由于已经编译完成并且打包,所以安装很方便
- 由于套件信息已经记录在Linux主机的数据库中,方便查询、升级与卸载
- 缺点
- 安装环境必须与打包时的环境一致
- 需要满足软件的依赖属性需求
- 卸载时需要特别小心,最底层的软件不可以先删除,否则可能造成整个系统出问题
RPM的使用权限
RPM软件的安装、删除、更新只有root权限才能使用;对于查询功能任何用户都可以操作;如果普通用户拥有安装目录的权限,也可以进行安装。
RPM包的命名规则
RPM 二进制包的命名需遵守统一的命名规则,用户通过名称就可以直接获取这类包的版本、适用平台等信息。
格式如下:
包名-版本号-发布次数-发行商-Linux平台-适合的硬件平台-包扩展名
- 软件包名称。
- 带有主、次和修订的软件包版本。
- 硬件平台。包括:i386、i486、i586、i686、x86_64、ppc、sparc、alpha
rpm包中硬件平台名称:
| 平台名称 | 适用平台信息 |
|---|---|
| i386 | 386 以上的计算机都可以安装 |
| i586 | 686 以上的计算机都可以安装 |
| i686 | 奔腾 II 以上的计算机都可以安装,目前所有的 CPU 是奔腾 II 以上的,所以这个软件版本居多 |
| x86_64 | 64 位 CPU 可以安装 |
| noarch | 没有硬件限制 |
注:软件包名中的 noarch 表示 没有硬件限制,可以在任何硬件平台上安装。
软件包中的其他名称
fcXX:表示适用用Fedora系统的包,比如,fc18,说明适用于Fedora 18。
devel:表示这个RPM包是软件的开发包,例如mysql-devel-5.1.52-1.el6_0.1.i686.rpm。
rpm包命名规则示例
以 httpd-2.4.6-95.el7.centos.x86_64.rpm 包为例:
- httpd:软件包名。这里需要注意,httpd 是包名,而 httpd-2.4.6-95.el7.centos.x86_64.rpm 通常称为包全名。包名和包全名有所不同,在某些 Linux 命令中,有些命令(如包的安装和升级)使用的是包全名,而有些命令(包的查询和卸载)使用的是包名,一不小心就会弄错。
- 2.4.6:包的版本号,格式通常为:主版本号.次版本号.修正号。
- 95:二进制包发布的次数,表示此 RPM 包是第几次编程生成的。
- el*:软件发行商。el7 表示此包适合在 RHEL 7.x (Red Hat Enterprise Unux) 和 CentOS 7.x 上使用。
- centos:表示此包适用于 CentOS 系统。
- x86_64:表示此包使用的硬件平台
- rpm:RPM 包的扩展名,表明这是编译好的二进制包,可以使用 rpm 命令直接安装。
还有以 src.rpm 作为扩展名的 RPM 包,这表明是源代码包,需要安装生成源码,然后对其编译并生成 rpm 格式的包,最后才能使用 rpm 命令进行安装。
Linux 系统不靠扩展名分区文件类型, 此处的 .rpm 扩展只是为了方便识别、使用。