当前位置: 首页 > backend >正文

每天掌握一个Linux命令 - rpm

Linux 命令工具 rpm 使用指南

  • Linux 命令工具 rpm 使用指南
    • 一、工具概述
    • 二、安装方式
      • 1. 系统预装
      • 2. 源码编译安装(极少场景)
    • 三、核心功能
    • 四、基础用法
      • 1. 安装软件包
      • 2. 升级软件包
      • 3. 查询软件包信息
      • 4. 卸载软件包
      • 5. 验证文件完整性
    • 五、进阶操作
      • 1. 批量操作与脚本化
      • 2. 构建 RPM 包
      • 3. 处理依赖关系
    • 六、实战案例
      • 案例 1:安装 Nginx 稳定版
      • 案例 2:升级 MySQL 客户端
      • 案例 3:卸载 Apache 并清理残留
    • 七、注意事项
      • 1. 依赖管理风险
      • 2. 系统文件保护
      • 3. 版本兼容性
      • 4. 权限要求
      • 5. 替代方案

Linux 命令工具 rpm 使用指南

一、工具概述

RPM(Red Hat Package Manager) 是 Red Hat 系 Linux 系统(如 RHEL、CentOS、Fedora)的标准软件包管理工具,用于软件的安装、升级、查询、验证和卸载等操作。其特点包括:

  • 标准化格式:软件包以 .rpm 文件形式发布,包含二进制文件、配置文件、依赖关系等元数据。
  • 依赖管理:自动处理软件包的依赖关系(需结合仓库配置)。
  • 系统一致性:确保安装的软件文件在系统中的位置和权限符合规范。

二、安装方式

1. 系统预装

RPM 工具随 Red Hat 系系统默认安装,无需额外操作。可通过以下命令验证:

rpm --version

2. 源码编译安装(极少场景)

若系统缺失 RPM,可从 RPM 官网 下载源码编译:

wget https://rpm.org/releases/rpm-4.17.x/rpm-4.17.3.tar.gz
tar -zxvf rpm-4.17.3.tar.gz
cd rpm-4.17.3
./configure && make && sudo make install

三、核心功能

功能分类说明
安装软件读取 .rpm 文件并将内容部署到系统指定路径
升级软件替换已安装软件的旧版本,支持保留旧配置文件
查询信息查看软件包的元数据、文件列表、依赖关系等
验证文件检查已安装文件的完整性和修改情况
卸载软件删除已安装的软件包及相关文件(可保留配置文件)
依赖管理检测软件包的依赖关系(需配合 yum/dnf 等高层工具实现自动安装)

四、基础用法

1. 安装软件包

rpm -i package.rpm       # 安装单个 RPM 包
rpm -ivh package.rpm     # -v 显示详细过程,-h 显示进度条(常用组合)

2. 升级软件包

rpm -Uvh package.rpm     # 升级已安装的包,若未安装则直接安装
rpm -Fvh package.rpm     # 仅升级已安装的包(未安装时不执行)

3. 查询软件包信息

rpm -q package_name      # 查询是否已安装(返回版本号表示已安装)
rpm -qi package_name     # 查看详细信息(描述、版本、作者等)
rpm -ql package_name     # 列出包安装的所有文件路径
rpm -qf /path/to/file    # 查询文件属于哪个 RPM 包
rpm -qR package_name     # 查看包的依赖关系

4. 卸载软件包

rpm -e package_name      # 卸载软件包
rpm -e --nodeps package_name  # 强制卸载(忽略依赖,可能导致系统问题)

5. 验证文件完整性

rpm -V package_name      # 检查包文件是否被修改(-V 等价于 --verify)
# 输出说明:S(大小)、M(权限)、5(MD5 校验和)等标记表示文件异常

五、进阶操作

1. 批量操作与脚本化

  • 批量安装多个包
    rpm -ivh package1.rpm package2.rpm package3.rpm
    
  • 结合管道处理查询结果
    rpm -qa | grep httpd   # 查找所有包含 "httpd" 的已安装包
    

2. 构建 RPM 包

通过 rpmbuild 工具将源码或文件打包为 RPM(需先安装 rpm-build 包):

sudo dnf install rpm-build -y
rpmbuild -ba specfile.spec  # 基于.spec 规格文件构建 RPM

3. 处理依赖关系

  • 手动解决依赖
    rpm -ivh --force --nodeps package.rpm  # 强制安装(不推荐,可能导致系统故障)
    
  • 配合 yum/dnf 使用(高层工具自动解析依赖):
    sudo dnf install ./package.rpm  # 通过 dnf 安装 RPM 并自动解决依赖
    

六、实战案例

案例 1:安装 Nginx 稳定版

  1. 下载 Nginx RPM 包:
    wget https://nginx.org/packages/centos/8/x86_64/RPMS/nginx-1.24.0-1.el8.ngx.x86_64.rpm
    
  2. 安装并查看文件列表:
    rpm -ivh nginx-1.24.0-1.el8.ngx.x86_64.rpm
    rpm -ql nginx  # 查看 Nginx 安装路径(如 /usr/sbin/nginx、/etc/nginx/ 等)
    

案例 2:升级 MySQL 客户端

  1. 查询当前 MySQL 版本:
    rpm -q mysql-client
    
  2. 下载新版本 RPM 并升级:
    wget https://repo.mysql.com//mysql80-community-release-el8-4.noarch.rpm
    rpm -Uvh mysql80-community-release-el8-4.noarch.rpm
    

案例 3:卸载 Apache 并清理残留

rpm -e httpd  # 正常卸载
rpm -e --allmatches httpd  # 卸载所有匹配的 Apache 包
rm -rf /etc/httpd  # 手动删除残留配置文件(根据实际路径调整)

七、注意事项

1. 依赖管理风险

  • 避免强制忽略依赖--nodeps--force 可能导致系统组件缺失或冲突,优先使用 yum/dnf 等工具自动处理依赖。
  • 来源可信性:仅从官方仓库或可信源下载 RPM 包,避免第三方未经签名的包引发安全问题。

2. 系统文件保护

  • 谨慎修改 RPM 管理的文件:通过 RPM 安装的文件会被记录校验信息,手动修改后可能导致 rpm -V 验证失败。若需修改配置,建议使用 rpm -e --noscripts 保留配置文件(卸载时)。

3. 版本兼容性

  • 核对系统版本:RPM 包需与系统发行版(如 CentOS 8、RHEL 9)及架构(x86_64、ARM)匹配,否则可能无法安装或运行。

4. 权限要求

  • 大部分操作需 root 权限:安装、升级、卸载等操作需通过 sudo 或切换至 root 用户执行。

5. 替代方案

  • 高层工具优先:在 Red Hat 系系统中,推荐使用 yum(CentOS 7 及之前)或 dnf(CentOS 8+)替代纯 RPM 命令,以简化依赖管理和仓库配置。

通过以上内容,可全面掌握 RPM 工具的核心功能与实践技巧。在实际使用中,建议结合系统包管理生态(如 yum/dnf + 官方仓库)以提升效率和稳定性。

http://www.xdnf.cn/news/11977.html

相关文章:

  • 前端组件推荐 Swiper 轮播与 Lightbox 灯箱组件深度解析
  • day63—回溯—全排列(LeetCode-46)
  • SimpleDateFormat 和 DateTimeFormatter 的异同
  • OpenCV C/C++ 视频播放器 (支持调速和进度控制)
  • MySQL 事务的 ACID 四大特性及其实现原理
  • 【echarts】堆叠柱形图
  • ubuntu自定义服务自动启动
  • Python绘图库及图像类型
  • SARIMA时间序列分析:三大模型对比
  • AWS中国区IAM相关凭证自行管理策略(只读CodeCommit版)
  • 【通用技巧】使用 AI 进行技术写作:使用 AI 写作助手编写技术内容的方法
  • MySQL 核心知识点解析
  • 高防IP可以防护什么攻击类型?企业网络安全的第一道防线
  • 找到每一个单词+模拟的思路和算法
  • Elasticsearch的写入性能优化
  • 常见优化器Optimizer总结
  • 网络编程之TCP编程
  • shell脚本一步完成批量创建删除Linux用户
  • 3D动画在微信小程序的实现方法
  • C语言数据结构笔记3:Union联合体+结构体取8位Bool量
  • 109页PPT华为流程模块L1-L4级梳理及研发采购服务资产5级建模
  • 如何通过RL真正提升大模型的推理能力?NVIDIA提出长期强化学习训练框架ProRL
  • Learning a Discriminative Prior for Blind Image Deblurring论文阅读
  • nest实现前端图形校验
  • Linux磁盘管理 - RAID
  • macOS 上使用 Homebrew 安装redis-cli
  • 我们来学zookeeper -- 集群搭建
  • Monorepo架构: 项目管理模式对比与考量
  • 详解ZYNQ中的 RC 和 EP
  • 解决idea编译运行项目时间长的问题