Linux:RPM包管理

发布时间 2023-11-28 21:17:13作者: Huan&

一  、RPM包管理

1、软件包管理介绍
1.1、软件包分类
源码包(就是直接的代码)
a. 脚本安装包(多了个安装界面,但是方便)
二进制包(就是源码经过编译后的文件)(别名RPM包或系统默认包)
1.2、源码包
优点
• 开源,可以直接修改源代码
• 自由选择所需功能
• 编译安装,更加稳定效率也搞
• 卸载方便(直接删除源码包安装目录)
缺点
• 安装过程步骤多,容易出现拼写错误
• 编译过长较长,安装比二进制安装时间长
• 因为是编译安装,安装过程中一旦出错新手很难解决

1.3、RPM包
二进制包优点
• 包管理系统简单,只通过几个命令就可以实现安装、升级、卸载等操作
• 安装速度比源码包快很多(和win时间差不多)
缺点
• 进过编译,看不到源代码
• 功能选择不如源代码灵活
• 依赖性(有一些软件需要别的软件支撑,导致必须只能安装支撑软件)

2、RPM包管理-包命名和依赖性
2.1、RPM命名规则
例如包全名:httpd-2.2.15-15.e16.centos.1.i686.rp

 

2.2、RPM包依赖性
• 树形依赖:a->b->c
安装a需要b,安装b需要c,若依我们先安装c再安装b最后安装a。卸载先卸载a再卸载b最后卸载c
• 环形依赖:a->b->c->a
把软件把a、b、c用命令同时装
• 模块依赖:以.so.数字结尾的都是库依赖
模块依赖查询网站:www.rpmfind.net

3、RPM包管理-安装升级和与卸载
3.1、包全名与包名
包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径
包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm中的数据库

3.2、RPM安装
语法:rpm-ivh 包全名

3.3、RPM包升级
语法:rpm -Uvh 包全名

 


3.4、卸载
语法:rpm -e 包名

参数                        说明
-e(erase)                卸载
–nodeps                不检查依赖性
4、RPM包管理-查询
4.1、查询是否安装
命令:rpm -q 包名

参数          说明
-q              查询(query)
-a              所有(all)
命令:rpm -qa

参数             说明
-a                 所有(all)
4.2、查询软件包详细信息
命令:rpm qi 包名

参数               说明
-i                   查询软件信息(information)
-p                 查询未安装包信息(package) 查询未安装需要写包全名
4.3、查询包中文件安装位置
命令:rpm -ql 包名

参数              说明
-l                   列表(list)
-p                  查询未安装包信息
例如:rpm -qlp zsh-4.3.11-4.el6.centos.2.x86_64.rpm 可以查询未安装软件想要的安装位置

4.4、查询系统文件属于哪个rpm包
命令:rpm -qf 系统文件名

参数                说明
-f                     查询系统文件属于哪个软件包(file)
4.5、查询软件包的依赖性
命令:rpm -qR 包名

参数               说明
-R                  查询软件包的依赖性(requires)

5、RPM包管理-校验和文件提取
5.1、RPM包校验
把包装完之后先把特征记录下来,然后需要的时候把现在的文件和原先的文件做个比较,比较有什么变化,看是不是我做的,判断文件是否被人修改过了
命令:rpm -V 已安装的包名称

参数           说明
-V :校验指定RPM包中的文件(verify)

 

验证内容中的8个信息的具体内容如下:

S 文件大小是否发生改变
M 文件的类型或文件的权限(rwx)是否被修改
5 文件MD5校验和是否改变(可以看做文件内容是否被修改)
D 设备的中,从代码是否改变
L 文件路径是否发生改变
U 文件的属主(所有者)是否改变
G 文件的属组是否改变
T 文件的修改时间是否发生改变
上图 的c是文件类型

参数 文件类型
c 配置文件(config file)
d 普通文档(documentation)
g ‘鬼’文件(ghost)很少见,就是该文件不应该被这个RPM包所包含
l 授权文件(license file)
r 描述文件(read me)
5.2、RPM包中文件提取
提取一个包中指定文件
用于一个文件丢失或者损坏直接在下载这个包内的一个文件就好了
例如:rpm2cpio 包全名 | cpio -idv ; .表示文件绝对路径

命令:cpio 选项 < [文件|设备]