Linux程序包管理之rpm

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、下图是正常安装过程

linuxidc_image002

2、忽略依赖关系

linuxidc_image004

3、强制重新安装

linuxidc_image006

升级

命令格式:

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) 内核升级可能会有若然隐患问题,所以不要对内核进行升级,如果要测试新版本内核,可用直接安装新版本内核,让与老版本并存。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14572.html