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

《Linux 包管理实战手册:RPM 精准操作与 YUM 自动化部署从入门到精通》

一、RPM 包管理:精准控制软件安装

1.1 RPM 是什么?

RPM(Red Hat Package Manager)是 Red Hat 系 Linux(如 CentOS、Fedora)的标准包格式,以 .rpm 文件为载体,支持安装、查询、验证、卸载等操作。
特点:轻量、可控,但需手动处理依赖关系。

1.2 RPM 核心命令实战

场景 1:安装 RPM 包

命令

rpm -ivh package_name.rpm  

-i:安装(install)

-v:显示详细过程(verbose)

-h:以 “#” 显示安装进度(hash)

示例:安装 httpd 服务(假设已下载 httpd-2.4.53-1.el9.x86_64.rpm)

rpm -ivh httpd-2.4.53-1.el9.x86_64.rpm  

输出结果

Preparing...                          ################################# [100%]  
Updating / installing...  1:httpd-2.4.53-1.el9               ################################# [100%]  
警告:/etc/httpd/conf/httpd.conf 已存在,将保留现有文件  

说明

若提示依赖缺失(如libssl.so),需先安装依赖包,或用yum间接解决(后文会讲)。

场景 2:查询已安装的 RPM 包

命令

rpm -qa [package_name]  # 模糊查询  
rpm -qi package_name     # 查看详细信息  
rpm -ql package_name     # 列出包安装的所有文件  

示例

查询所有已安装的 httpd 相关包:

rpm -qa | grep httpd  

输出

httpd-2.4.53-1.el9.x86_64  
httpd-tools-2.4.53-1.el9.x86_64  
rpm -qi httpd  
名称        : httpd  
版本        : 2.4.53  
发布        : 1.el9  
架构        : x86_64  
安装日期    : 2025年05月15日 星期四 14:30:00  
大小        : 3456789  
摘要        : Apache HTTP Server  
描述        : The Apache HTTP Server is a powerful and flexible web server.  
    场景 3:卸载 RPM 包

    命令

    rpm -e package_name  
    

    强制卸载(忽略依赖):rpm -e --nodeps package_name(谨慎使用!)

    示例:卸载 httpd:

    rpm -e httpd  
    

    输出

    警告:正在删除"httpd",它的依赖关系如下:  libhttpd.so.1()(64bit) 被 (已安装) mod_proxy_http-2.4.53-1.el9.x86_64 需要  
    是否继续?[y/N] y  
    

    注意:直接卸载可能导致依赖它的软件异常,建议用yum remove替代(后文会讲)。

    二、YUM 仓库管理:自动化包管理神器

    2.1 YUM 是什么?

    YUM(Yellowdog Updater, Modified)基于 RPM,通过远程仓库自动解决依赖关系,支持批量安装、更新、卸载软件。
    核心优势:一键处理依赖,大幅降低运维成本。

    2.2 YUM 仓库配置基础

    1. 仓库配置文件位置
    /etc/yum.repos.d/  # 存放*.repo仓库配置文件  
    
    2. 手动创建本地仓库(示例:CentOS 本地源)

    步骤 1:挂载 ISO 镜像(假设镜像路径为 /mnt/cdrom)

    mount /dev/cdrom /mnt/cdrom  
    

    步骤 2:创建仓库配置文件centos-local.repo

    vi /etc/yum.repos.d/centos-local.repo  
    

    文件内容

    [centos-local]  
    name=CentOS Local Repository  
    baseurl=file:///mnt/cdrom  # 本地路径,或http://远程仓库地址  
    enabled=1                 # 启用仓库(1=启用,0=禁用)  
    gpgcheck=0                # 关闭GPG校验(测试环境可用,生产环境建议开启)  
    

    步骤 3:刷新仓库缓存

    yum clean all  
    yum makecache  
    

    输出

    Metadata Cache Created successfully.  
    

    2.3 YUM 常用命令实战

    场景 1:安装软件包

    命令

    示例:安装 Nginx(使用默认远程仓库)

    yum install nginx  
    

    输出片段

    依赖关系解决:  
    ====================================================================  
    Package       版本          仓库          大小  
    ====================================================================  
    安装:  
    nginx         1:1.20.1-15.el9  appstream   468 k  
    安装依赖项:  
    nginx-core    1:1.20.1-15.el9  appstream   1.2 M  
    ...  
    是否继续?[y/N] y  
    
    场景 2:查询可用包
    yum list available | grep package_name  # 查询仓库中可用的包  
    yum info package_name                   # 查看包详细信息  
    

    示例:查询 Python 3.9 相关包

    yum list available | grep python3.9  
    

    输出

    python3.9.x86_64            3.9.16-4.el9        appstream  
    python3.9-core.x86_64       3.9.16-4.el9        appstream  
    python3.9-libs.x86_64       3.9.16-4.el9        appstream  
    
    场景 3:更新与卸载
    yum update       # 更新所有已安装包  
    yum upgrade      # 升级系统(含内核,需谨慎)  
    yum remove       # 卸载包(自动处理依赖)  
    

    示例:卸载 httpd 及其依赖

    yum remove httpd  
    

    输出

    依赖关系解决:  
    ====================================================================  
    软件包        架构          版本          仓库          大小  
    ====================================================================  
    删除:  
    httpd         x86_64        2.4.53-1.el9   @system       3.2 M  
    删除依赖项:  
    httpd-tools   x86_64        2.4.53-1.el9   @system       92 k  
    ...  
    是否继续?[y/N] y  
    
    场景 4:清理缓存与过期包
    yum clean all          # 清理所有缓存  
    yum autoremove         # 删除不再需要的依赖包  
    

    三、生产环境最佳实践

    1. 优先使用 YUM 而非 RPM
      • 生产环境中尽量通过 YUM 安装软件,避免手动处理依赖导致的系统不稳定。
    2. 锁定关键包版本
      .repo文件中添加versionlock配置,防止重要软件被自动升级:
      [versionlock]  
      package = httpd  
      version = 2.4.53-1.el9  
      
    3. 多仓库优先级管理
      通过priority参数设置仓库优先级(数值越小优先级越高):
      priority=1  # 核心仓库  
      priority=10 # 次要仓库  
      

    四、常见问题与避坑指南

    1. 依赖冲突如何解决?
      • yum deplist package_name查看依赖树,手动排除冲突包。
      • 升级系统到最新版本:yum update
    2. 仓库无法访问怎么办?
      • 检查网络连接或本地镜像挂载路径。
      • 更换国内源(如阿里云、腾讯云镜像站)。
    3. 误删系统包如何恢复?
      • rpm -qa --queryformat "%{NAME}\n" > packages.list备份已安装包列表。
      • 通过系统安装介质重建缺失包。
    http://www.xdnf.cn/news/10645.html

    相关文章:

  • 软件测评师 第9章 基于质量特性的测试与评价 笔记
  • SQL 中的 `CASE WHEN` 如何使用?
  • CUDA与OpenGL混合编程图形渲染
  • 【Python 算法零基础 4.排序 ⑦ 桶排序】
  • 【算法训练营Day05】哈希表part1
  • 《软件项目管理》第二章(项目准备与启动)期末周复习总结笔记
  • uniapp中view标签使用范围
  • Kotlin 中companion object {} 什么时候触发
  • C语言:内存函数
  • 前端面试高频问题通关指南--通用性问题
  • Python----目标检测(使用YOLO 模型进行线程安全推理和流媒体源)
  • SQL: 窗口滑动(Sliding Window)
  • 数学建模期末速成 最短路径
  • 23. Merge k Sorted Lists
  • Alist Win 基本用法
  • JavaSE知识总结(集合篇) ~个人笔记以及不断思考~持续更新
  • Python中使用pandas
  • C++ list代码练习、set基础概念、set对象创建、set大小操作
  • SQL 窗口函数深度解析:ROW_NUMBER 实战指南
  • volatile,synchronized,原子操作实现原理,缓存一致性协议
  • LabVIEW准分子激光器智能控制系统
  • 35.x64汇编写法(二)
  • Elasticsearch 读写流程深度解析
  • JAVA中的注解和泛型
  • 用 Whisper 打破沉默:AI 语音技术如何重塑无障碍沟通方式?
  • Mybatis框架各配置文件主要内容详解(二)
  • 神经网络与深度学习(第二章)
  • 数字化转型全场景安全解析:从产品到管理的防线构建与实施要点
  • 由浅入深一文详解同余原理
  • 【Android】MT6835 + MT6631 WiFi进入Meta模式出现WiFi_HQA_OpenAdapter failed