rpm( Red Hat Package Manager )是一个开放的软件包管理系统。它工作于Red Hat Linux及其他Linux系统,成为Linux中公认的软件包管理标准。
rpm将编译好的应用程序的各组成文件打包成一个或几个程序包文件,从而更方便地实现程序包的安装、升级、卸载和查询等管理操作
rpm维护一个所有已安装的软件包和文件的数据库,可以让用户进行功能强大的软件包查询和验证工作。
rpm的功能安装:-i, --install
卸载:-U, --update, -F, --freshen
升级:-e, --erase
查询:-q, --query
验证:-V, --verify
数据库维护:--builddb, –initdb
rpm软件包命名格式rpm包的命名格式一般分两大部分组成。
第一部分是源代码版本号,比如:
name-VERSION.tar.gz
name: 源代码包的名称
VERSION分为:
major: 主版本号,一般程序功能有重大改变才会变动
minor: 次版本号,程序功能某个小的分支有变动,才会变动
release: 发行号,修正了某个BUG或升级了某段代码,才会变动
第二部分是rpm打包制作的版本。
如果用源代码比作面粉,rpm包比作馒头,它们的区别在于: 面粉有不同的工艺,拿面粉又做出了各种可口的馒头。
这样最终的软件包格式就构成了:
name-VERSION-release.arch.rpm
其中
name-VERSION仍然沿用源代码包的命名
release : 是rpm包打包制作的发行号
arch:是指明适用于哪种操作系统平台,有i386, x64(amd64), ppc, noarch等
获取程序包除了系统发行版的光盘自带的rpm软件包外,通常还需要到网上下载,下面是几个可信的获取软件包的途径
(1) 官方的文件服务器(或镜像站点)
(2) 项目的官方站点
(3) 第三方组织:
(a) EPEL
(b) 搜索引擎
(4) 自己动手编译。
下载后建议检查程序包的合法性和完整性。
rpm命令使用 安装命令格式:
01
rpm {-i|--install} [install-options] PACKAGE_FILE …
通用选项
-v : verbose ,详细信息
-vv : 更详细的信息
[install-options]:
-h:hash marks输出进度条,每个#表示2%的进度
--test:测试安装,检查并报告依赖关系及冲突消息等
--nodeps:忽略依赖关系
--replacepkgs:强制重新安装已经安装的软件包
--nosignature:不检查包签名信息,不检查来源合法性;
--nodigest:不检查包完整性信息;
注意:每一个程序安装时可能会运行脚本,做一些准备操作。rpm包可以自带脚本,这些脚本有四类,分别在不同的时刻被触发,分别是:
preinstall : 安装过程开始之前运行的脚本,%pre , --nopre
postinstall : 安装过程完成之后运行的脚本,%post , --nopost
preuninstall : 卸载过程真正开始执行之前运行的脚本,%preun, --nopreun
postuninstall : 卸载过程完成之后运行的脚本,%postun , --nopostun
应用:
1、下图是正常安装过程
2、忽略依赖关系
3、强制重新安装
升级命令格式:
01 02 03
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
其中
-U:如果有安装老版本则升级,如果老版本安装不存在,则安装最新版本
-F:如果有安装老版本就升级,如果老版本安装不存在,则不予理会
通用选项:
-v : verbose ,详细信息
-vv : 更详细的信息
[install-options]:
-h:hash marks输出进度条,每个#表示2%的进度
--test:只进行升级测试
--oldpackage:降级,如果新版本存在很多问题,就要用到降级
--force:强制升级,如果新版本不再为其它程序提供依赖服务,这时会报错,可用强制升级
注意:
(1) 内核升级可能会有若然隐患问题,所以不要对内核进行升级,如果要测试新版本内核,可用直接安装新版本内核,让与老版本并存。