RPM(Red Hat Package Manager)的功能解析

server/2024/12/19 4:21:40/

RPM 是一种用于 Linux 系统的软件包管理器,主要用于安装、升级、查询、验证、卸载和管理软件包。


1. RPM 的基本功能

1.1 软件包安装
  • 安装新软件包。
  • 安装时会自动检查依赖关系,提示需要的依赖。
  • 命令:
    rpm -ivh package.rpm
    
    参数说明:
    • -i:安装。
    • -v:显示详细信息。
    • -h:显示安装进度条。
1.2 软件包升级
  • 升级已安装的软件包,支持覆盖旧版本。
  • 如果当前版本不存在,会直接安装。
  • 命令:
    rpm -Uvh package.rpm
    
    参数说明:
    • -U:升级或安装。
    • -v-h:同上。
1.3 查询软件包
  • 查询已安装的软件包或 RPM 文件的相关信息。
  • 示例命令:
    # 查询是否安装某个包
    rpm -q package_name# 查询包提供的文件
    rpm -ql package_name# 查询某个文件属于哪个包
    rpm -qf /path/to/file# 查看包详细信息
    rpm -qi package_name# 查询包依赖
    rpm -qR package_name
    
1.4 验证软件包
  • 检查文件的完整性或是否被修改。
  • 命令:
    rpm -V package_name
    
    常见验证标志:
    • S:大小被修改。
    • M:权限被修改。
    • 5:校验和改变。
    • T:修改时间被改变。
1.5 卸载软件包
  • 卸载已安装的软件包。
  • 会检查其他包是否依赖于此包。
  • 命令:
    rpm -e package_name
    

2. RPM 的高级功能

2.1 依赖管理
  • RPM 会检查依赖关系,但不会自动解决,需要手动安装依赖。
  • 命令:
    rpm -ivh package.rpm
    
    如果缺少依赖,会显示类似:
    error: Failed dependencies:dependency_name is needed by package_name
    
2.2 查询安装位置
  • 查看软件包的安装文件及其路径。
  • 命令:
    rpm -ql package_name
    
2.3 自定义数据库路径
  • 可以指定 RPM 数据库的路径,以便在非标准环境下管理包。
  • 示例:
    rpm --dbpath /custom/path/to/rpmdb -qa
    
2.4 生成 RPM 包
  • 创建 RPM 包时,使用 rpmbuild 工具,RPM 规格文件(SPEC 文件)包含了包的构建过程。
  • 示例生成命令:
    rpmbuild -ba package.spec
    
2.5 验证依赖关系
  • 验证安装的包是否缺少依赖:
    rpm -Va
    
2.6 导出签名密钥
  • 签名的 RPM 包需要使用密钥验证。
  • 导出公钥以供验证:
    rpm --export-key > key_file.gpg
    

3. 常见 RPM 管理任务

3.1 清理缓存
  • 删除 RPM 产生的临时文件和未使用的软件包文件:
    rpm --rebuilddb
    
3.2 强制安装/卸载
  • 忽略依赖强制安装:
    rpm -ivh --nodeps package.rpm
    
  • 强制卸载:
    rpm -e --nodeps package_name
    
3.3 转换格式
  • 将 RPM 包转换为 CPIO 格式以提取文件:
    rpm2cpio package.rpm | cpio -idmv
    

4. RPM 与 YUM 的关系

  • RPM 是底层的包管理工具,用于直接操作软件包。
  • YUM 是基于 RPM 的前端工具,可以自动解决依赖问题,并支持在线安装和更新。
  • YUM 与 RPM 的区别:
    • RPM 需要手动处理依赖,YUM 自动解决。
    • YUM 支持远程仓库,RPM 主要用于本地包操作。

5. 小结

RPM 是 Linux 系统中强大的软件包管理工具,提供了从安装、查询、卸载到验证的全方位功能。在日常运维中,搭配 YUM 或 DNF 可以更高效地进行软件包管理。


http://www.ppmy.cn/server/151351.html

相关文章

docker xxxx is using its referenced image ea06665f255d

Error response from daemon: conflict: unable to remove repository reference “registrxxxxxx” (must force) - container 9642fd1fd4a0 is using its referenced image ea06665f255d 这个错误表明你尝试删除的镜像正在被一个容器使用,因此无法删除。要解决这…

基于SpringBoot的乡村信息服务平台的设计与实现

摘 要 乡村信息服务平台的研究背景源于当前乡村振兴战略的实施和信息化技术的快速发展。随着城乡经济差距的逐渐凸显,乡村信息服务平台成为一种新型的信息化手段。本系统采用Java语言,MySQL数据库,采用MVC框架, JS技术开发。乡村信息服务平…

秒杀业务中的库存扣减为什么不加分布式锁?

前言 说到秒杀业务的库存扣减,就还是得先确认我们的扣减基本方案。 秒杀场景的库存扣减方案 一般的做法是,先在Redis中做扣减,然后发送一个MQ消息,消费者在接到消息之后做数据库中库存的真正扣减及业务逻辑操作。 如何解决数据…

定时/延时任务-Kafka时间轮源码分析

文章目录 1. 概要2. TimingWheel2.1 核心参数2.2 添加任务2.3 推进时间 3. TimerTaskList3.1 添加节点3.2 删除节点3.3 刷新链表3.4 队列相关 4. 时间轮链表节点-TimerTaskEntry5. TimerTask6. Timer 和 SystemTimer - 设计降级逻辑7. 上层调用8. 小结 1. 概要 时间轮的文章&a…

uniapp的多列选择器

1.代码如下 <template><view class"container"><form><picker mode"multiSelector" :range"multiArray" change"onMultiChange" columnchange"onMultiColumnChange"><view class"picker&q…

基于Spring Boot的社区药房系统

一、系统背景与目的 随着医疗改革的深入和社区医疗服务的不断完善&#xff0c;社区药房在居民健康保障中扮演着越来越重要的角色。然而&#xff0c;传统的药房管理方式存在着库存管理混乱、药品销售不透明、客户信息管理不规范等问题。为了解决这些问题&#xff0c;基于Spring…

Redis篇-16--持久化篇(RDB,AOF,混合持久化,最佳策略)

Redis是一个内存中的键值存储系统&#xff0c;虽然它主要将数据保存在内存中以提供高性能的读写操作&#xff0c;但它也提供了多种持久化机制&#xff0c;以确保在服务器重启或崩溃后&#xff0c;数据不会丢失。Redis主要支持两种持久化方式&#xff1a;RDB&#xff08;Redis D…

概率论得学习和整理23:EXCEL 数据透视表基础操作

目录 1 选择数据&#xff0c;插入数据透视表 2 选择数据透视表生成位置 3 出现了数据透视表的面板 4 数据透视表的基本结构认识 4.1 交叉表/列联表 4.2 row, column, cell 一个新增的筛选器&#xff0c;就这么简单 4.3 可以只添加 rowcell/值 &#xff0c;也可以colu…