Linux装配—2.rpm管理

rpm(Redhat Packages Manager),linux软件管理工具

rpm维护了一个数据库,在这个数据库中记录了系统中的全部已安装软件信息

rpm可以将源码程序制作成二进制格式的安装包,这些安装包的后缀都是.rpm

rpm可以安装和卸载rpm格式的二进制安装包


rpm的组成

- 主包:软件名-version.rpm
- 支包:软件名-扩展名-version.rpm

# 注意:一个程序依赖另一个程序,其实就是依赖那个程序的头、库文件
# 通常程序的头文件和库文件都是位于程序的一个支包,名称是 软件名-devel-verison.rpm

 

安装过程使用的脚本

- 安装前脚本
- 安装后脚本
- 卸载前脚本
- 卸载后脚本

 

获取rpm包方式

- 1.光盘
- 2.官网、镜像站
- 3.http://rpmfind.net
- 4.epel源

# 光盘或官网获取的仅仅是基本的rpm包
# 如要使用扩展或者相对新的rpm包,需要使用epel

 

RPM包安装操作的补充

rpm -ivh --test rpm包          // 干跑模式
rpm -ivh --nodeps rpm包        // 忽略依赖强制安装,但是不见得能用
rpm -ivh --replacepkgs rpm包   // 覆盖安装
rpm -ivh --ignoreos rpm包      // 忽略系统版本号
rpm -ivh --nodigest            // 不检查软件包完整性(是否被篡改)
rpm -ivh --nosignature         // 不检查软件包的来源合法性
rpm -ivh --noscripts           // 在安装的时候,不执行脚本

# replacepkgs centos6覆盖安装,生成的新文件不会覆盖修改过的文件
# replacepkgs centos7发生过修改的话,覆盖安装,新生成的文件会被重新命名

 

RPM包升级操作的补充

- rpm -U    // 如软件已存在,则进行升级操作;未安装,则执行安装操作
- rpm -F    // 如软件已存在,则进行升级操作;未安装,不会安装。

- 常用组合
| Uvh
| Fvh

- --oldpackage       // 将软件降级到指定版本
- --force            // 强制升级

# 不要对内核进行升级,可以安装新内核,这样就是多内核共存,避免无法启动
# 升级软件时,如旧版本软件配置文件发生修改,新软件的配置文件不会覆盖旧文件,会生成一个.rpmnew文件

 

RPM包查询操作的补充

- 如果不知道文件是哪个软件生成的,使用 rpm -qf 文件名(文件夹名)
| [root@wg opt]# rpm -qf /usr/share/man/man8/xinetd.8.gz
| xinetd-2.3.15-14.el7.x86_64
| [root@wg opt]# rpm -qf /usr/share/man/man8
| filesystem-3.2-25.el7.x86_64

- --whatprovides 查看指定的能力是由哪个软件产生的
  # 在一般情况下和-f结果相同,但是能显示更多详细信息

- --whatrequires 查看指定的能力被谁依赖

- --changelog 查询显示指定软件的更新日志,是rpm包更新日志

- --scripts 显示安装前后脚本

- -a 显示所有已经安装的rpm包
- -c 显示软件的配置文件位置
- -d 显示软件的帮助手册的位置
- -l 显示软件的全部文件列表
- -f 显示一个而文件是有哪个软件所产生的
- -i 查看软件包信息

[root@wg opt]# rpm -qi mysql-community-client
Name        : mysql-community-client
Version     : 5.7.36
Release     : 1.el7
Architecture: x86_64
Install Date: 
Group       : Applications/Databases
Size        : 107096378
License     : Copyright (c) 2000, 2021, Oracle and/or its affiliates...
Signature   : DSA/SHA256, 2021年09月08日 星期三 08时34分04秒, Key ID 8c718d3b5072e1f5
Source RPM  : mysql-community-5.7.36-1.el7.src.rpm
Build Date  : 2021年09月07日 星期二 15时55分43秒
Build Host  : pb2-el7-08.appad3iad.mysql2iad.oraclevcn.com
Relocations : (not relocatable)
Packager    : MySQL Release Engineering <mysql-build@oss.oracle.com>
Vendor      : Oracle and/or its affiliates
URL         : http://www.mysql.com/
Summary     : MySQL database client applications and tools
Description :
This package contains the standard MySQL clients and administration
tools.

- -p 对尚未安装的软件进行查询,需要指定包全名,常用组合
| -qpl
| -qpi
| -qpf
| -qpd
| -qpc

 

RPM包文件效验的补充

- rpm -V 已安装包名 校验指定RPM包中的文件(verify)
  > 验证内容中的8个信息的具体内容如下:
  > S 文件大小是否改变
  > M 文件的类型或文件的权限(rwx)是否被改变
  > 5 文件MD5效验和是否改变 可以看成文件内容是否改变
  > D 设备的主从代码是否改变
  > L 文件路径是否改变
  > U 文件的属主是否改变
  > G 文件的属组是否改变
  > T 文件的修改时间是否改变

# 举例,修改软件配置文件后,效验

- rpm -K 软件包名

 

RPM包使用补充

- rpm包中文件提取
| rpm2cpio 包全名 | cpio -idv.文件绝对路径
| rpm2cpio   # 将rpm包转换为cpio格式的命令
| cpio       # 是一个标准工具,它用于创建软件档案文件和从档案文件中提取文件

- 安装过程遇到报错   warning 。。。。。keykey ID c105b9de: NOKEY
| 解决的方法就是在rpm 语句后面加上 --force --nodeps
| 有了这两个设置选项就忽略了这些依赖关系,强制安装或者卸载;
| ----
| yum安装了旧版GPG keys造成问题解决办法 rpm --import /etc/pki/rpm-gpg/RPM*

 

RPM包发布

- 流程
| 1.制作rpm包
| 2.用md5或者其他单项加密算法来获取软件的特征码
| 3.调用公钥对特征码进行加密
| 4.将加密后的特征码附加在程序的末尾
| 5.发布出去

- 提供私钥的方式
| 1.光盘
| 2.官网下载

- 导入秘钥
| rpm --import /mnt/RPM-GPG-KEY-CentOS-6

 

RPM数据库重建

- /var/lib/rpm/

- rpm {--initdb|--rebuilddb}
| --initdb 如果数据库不存在,新建一个数据库
| --rebuilddb 直接新建数据库,覆盖原来的数据
posted @   梵高de画笔  阅读(73)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示