目录

Repos系列yum-install-nginx-是怎么从仓库中下载并安装的-

目录

【Repos系列】yum install nginx 是怎么从仓库中下载并安装的?

yum install nginx 是 YUM 包管理工具从配置的软件仓库中下载并安装软件包的核心操作。以下是其完整工作流程的详细步骤(结合缓存机制和依赖处理):

​1. 隐式元数据同步(若缓存过期)​

  • ​检查缓存有效性:YUM 会先检查本地缓存(/var/cache/yum/ 目录)是否过期。若缓存过期(由仓库配置的 metadata_expire 参数决定)或不存在,​自动触发 yum makecache 流程​(即下载最新元数据并生成缓存)。
  • ​直接使用缓存:若缓存有效,直接读取本地元数据(如 SQLite 数据库),无需重新下载。

​2. 解析软件包名称与依赖

  • ​名称匹配:在元数据中搜索 nginx 软件包,确定其全名(如 nginx-1.20.1-1.el7.x86_64)。
  • ​依赖树构建:
    • ​直接依赖:解析 nginx 的显式依赖(如 openssl >= 1.1.1、systemd)。
    • ​递归依赖:逐层解析依赖的依赖,直到所有底层依赖被满足。
  • ​冲突检测:检查当前系统中已安装的软件包是否与新依赖存在冲突(如版本不兼容)。

​3. 生成事务(Transaction)​

  • ​事务模拟:YUM 生成一个虚拟的安装计划,列出所有需要下载的软件包(包括 nginx 及其依赖项)。
  • ​用户确认:显示事务摘要(如安装包数量、总下载大小),并提示用户确认(可通过 -y 参数跳过确认)。

​4. 下载软件包

  • ​选择镜像源:根据仓库配置的 baseurl 或 mirrorlist,选择最快的可用镜像服务器。
  • ​并行下载:
    • 从仓库 URL(如 )下载 nginx 及其依赖的 RPM 文件。
    • 文件临时存储在 /var/cache/yum/ 的子目录中(如 packages 目录)。

​5. 安装软件包

  • ​RPM 安装引擎:调用底层的 rpm 命令执行以下操作:
    • ​依赖验证:确保所有依赖的 RPM 包已下载且版本兼容。
    • ​文件解压:将 RPM 包中的文件解压到系统目录(如 /usr/bin/, /etc/nginx/)。
    • ​注册软件包:向 RPM 数据库(/var/lib/rpm)写入安装信息(版本、文件列表、依赖关系)。
    • ​脚本执行:运行 RPM 包中的预安装(%pre)和后安装(%post)脚本(如创建用户、启动服务)。

​6. 清理与收尾

  • ​保留缓存:下载的 RPM 包默认保留在缓存目录中,以便后续重复安装或回滚。
  • ​更新缓存状态:记录此次事务的元数据版本,确保后续操作基于最新状态。