Linux RPM软件包管理

1.软件包的介绍
2.rpm包管理
3.rpm包管理前端工具

1.软件包的介绍

在我们在对软件包管理前,先对软件包有个很好的了解,这样更方便我们来对其进行管理。
软件包:是具有特定功能,用来完成某一任务的特定程序或一组程序,其由基本配置和若干可选部件构成,其形式可以是源文件码形式也可以是目标码形式的。
包文件:包文件中包含RPM包内文件、RPM包的元数据、安装或卸载时运行的脚本。
包的公共数据库:包含有程序包的名称及版本、依赖关系、功能说明、包安装后生成的各文件路径以及校验码信息,其位于/var/lib/rpm目录下。
包管理器:是将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等操作。常用到的管理器有rpm包管理器,rpm包管理器的前端工具yum。

2.rpm包管理

CentOS系统上使用rpm命令管理程序包,进行安装、卸载、升级、查询、校验和数据库维护。

rpm - RPM Package Manager
Usage: rpm [OPTION...]

common options:

-D, --define='MACRO EXPR':定义宏表达式
--undefine=MACRO:不定义宏
-E, --eval='EXPR':打印宏表达式
--rcfile=<FILE:...>,--macros=<FILE:...>:读取文件来代替默认文件
--noplugins:不激活任何插件
--nodigest:不检查包完整性
--nosignature:不检查来源合法性,忽略签名
-r, --root=ROOT:使用ROOT作为最高级的目录,默认‘/’
--dbpath=DIRECTORY:在目录中使用数据库
--querytags:显示所知的标签
--showrc:显示最终的rpmrc和macro配置
--quiet:提供简约的过程打印
-v, --verbose :打印详细过程

1)rpm包安装、升级和卸载

rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...
--allfiles:安装所有文件
--test:测试安装,但不真正 执行安装,即dry run 模式
--allmatches:移除所有匹配的包
--badreloc:在不可定位的包上重定位文件
-e,--erase:卸载包
--excludedocs:不安装文件
--excludepatth=<path>:跳过带有领导的path内容的文件
--force:代表--replacepakgs --replacefiles,为强制安装
-F,--freshen=<packagefile>:升级已经安装的包
-h,--hash:与-v一起,在安装包时打印安装过程
--ignorearch:不检查包的结构
--ignoreps:不检查包的操作系统
--ignoresize:在安装前不检查磁盘空间
-i,--install:安装包
--justdb:更新数据库但不修改文件系统
--nodeps:忽略依赖关系
--nofiledigest:不检查文件的完整性
--nocontexts:不安装文件的安全环境
--noorder:do not reorder package installation to satisfy dependencies
--noscripts:不执行程序包脚本
--notriggers:不执行任何被这个包触发的脚本
--nocollections:不执行任何收集行为
--oldpackage:降级安装(慎用)
--percent:打印包安装的百分比
--replacepkgs | replacefiles:替代安装,覆盖安装
-U,--upgrade=<packagefile>:升级包

注意
(1)不要对内核做升级操作;Linux支持多内核版本并存,因此,可以直接安装新版本内核
(2)如果原程序包的配置文件安装后曾被修改,升级时,新版本提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew) 后保留
(3)upgrade :安装有旧版程序包,则“升级”,如果不存在旧版程序包,则“安装”;freshen :安装有旧版程序包,则“升级”,如果不存在旧版程序包,则不执行升级操作。

从上面可以看出,选项真不是一般多,实际上我们只是用些一般的操作
安装用:rpm -ivh Package_file
升级用:rpm -Uvh Package_file和rpm -Fvh Package_file
卸载用:rpm -evh Package_file
实际上只有在刚安装的系统上我们才会用到rpm命令来安装、卸载、升级,系统基础配置好后,就一般不用rpm,因为很多软件包都是带有依赖关系的,rpm安装的时候会很麻烦,后期我们会用到yum包管理工具,下面会说到。

2)rpm包查询和校验

rpm {-q|--query} [select-options] [query-options]
rpm {-V|--verify} [select-options] [verify-options]

[select-options]:

-a, --all :所有文件
-f, --file:查看指定的文件由哪个程序包安装生成
-g, --group:包所在组
-p, --package:针对尚未安装的程序包文件做查询操作
--pkgid:包id
--hdrid :包头识别
--triggeredby:查询触发包
--whatrequires:查询指定的 CAPABILITY 被哪个包所依赖
--whatprovides:查询指定的 CAPABILITY(能力)由哪个包所提供
--nomanifest:do not process non-package files as manifests

[query-options]:

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

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