yum的原理及配置

本文介绍如何在CentOS系统中配置yum源,通过挂载光盘并设置yum配置文件来实现从本地光盘安装软件包。教程涵盖创建挂载目录、编辑yum配置文件等步骤。
 
yum解决了安装倚赖包非常麻烦的问题,yum可以自动查找yum源,从中获取需要的倚赖包(rpm)。
rpm包是编译之后的包。可直接安装。
源码包中是c语言,需要编译之后才能安装。
1、首先在/media目录下创建一个目录CentOS并将将光盘挂载到系统/media/CentOS下
          mkdir /media/CentOS
          mount /dev/cdrom /media/CentOS/
2、进入到/etc/yum.repos.d目录CentOS-Base.repo重命名。
          cd /etc/yum.repos.d
          mv CentOS-Base.repo CentOS-Base.repo.bak
        如果是CentOS 6 以上版本还需要执行 mv CentOS-Debuginfo.repo CentOS-Debuginfo.repo.bak

将所有的CentOS安装包链接到/media/CentOS
ln -s /media/cdrom/CentOS/ /media/CentOS


3、编辑CentOS-Media.repo文件
        vi CentOS-Media.repo
      配置yum源的位置:
      baseurl=file:///media/CentOS/
            file:///media/cdrom1/
            file:///media/cdrom2/
            file:///media/cdrecorder/

        修改gpgcheck与enabled两个值修改为
        gpgcheck=0
        enabled=1
        这样在使用yum安装软件包的时候使用的就是本地光盘中的软件包了。
        

        以上做法是直接从光盘中获取软件包的,如果取出安装光盘就不好使了,能不能取走了还能用呢,当然可以,在没有取走安装盘的情况下执行
        dd if=/dev/cdrom of=/media/cdrom.iso
        因为安装盘比较大,可能要等待几分钟,执行完毕后在/media目录下会看到一个cdrom.iso的文件,接下来可以取出光盘了,只需要将其挂载到/media/CentOS目录下就可以了,在确定/media/CentOS目录已经创建,并且没有挂载其他介质的情况下执行
    mount -o loop /media/cdrom.iso /media/CentOS/

<think>好的,我现在需要帮助用户理解CentOS中yum本地配置原理。用户之前已经询问过关于CentOS代码包的详细信息,现在他想更深入地了解yum本地配置原理。根据用户提供的引用内容,我需要整合这些信息,并参考之前的回答,给出一个结构清晰且详细的解释。 首先,用户的问题是关于yum本地配置原理。我需要先回顾之前提供的回答,确保这次的内容不重复,但更深入。之前的回答提到了如何配置本地,包括编辑.repo文件、挂载镜像、清理缓存等步骤。现在用户需要的是这些步骤背后的原理。 接下来,我需要结合用户提供的引用内容。引用1和2提到了配置本地的具体步骤,比如修改.repo文件,设置baseurl为本地路径。引用3解释了Yum的基本功能,如处理依赖关系,基于RPM包管理。引用4涉及挂载镜像到指定目录。这些内容都是配置本地的关键步骤,但用户现在需要的是这些步骤背后的工作机制。 我应该从Yum的核心功能开始,解释其如何工作,然后过渡到本地原理Yum作为软件包管理器,主要处理依赖关系和自动下载安装。本地配置改变了Yum获取软件包的位置,从远程服务器转向本地存储,比如光盘或ISO镜像。 需要详细说明几个关键点:Yum仓库的结构,包括repodata目录及其包含的元数据文件(如primary.xml、filelists.xml等),这些元数据如何帮助Yum解析依赖关系。另外,本地配置的具体步骤,如创建.repo文件、指定baseurl路径、挂载镜像等,以及这些步骤如何影响Yum的行为。 还要解释当用户运行yum命令时,Yum如何根据.repo文件中的配置找到本地,读取元数据,并处理安装请求。需要提到缓存机制,比如yum makecache如何生成元数据缓存,加速后续操作。此外,依赖解决的过程,即Yum如何利用本地仓库中的元数据确定需要安装的软件包及其依赖。 可能还需要对比本地和网络的区别,强调本地的优势,比如离线使用、速度更快,以及适用场景,如无网络环境或需要特定版本软件的情况。同时,注意事项如挂载点的持久性和路径的正确性也需要提及,确保用户理解配置中的常见问题。 最后,要确保回答结构清晰,分点解释原理、核心组件、工作流程、优缺点等。使用用户之前的问题中的引用内容作为支持,但避免重复步骤,专注于解释背后的机制。检查是否涵盖了用户可能关心的所有方面,比如元数据的作用、缓存的重要性、依赖解析的具体过程,以及如何确保配置的正确性。</think>### CentOS YUM 本地配置原理详解 #### 一、核心运行机制 YUM 本地配置本质是通过**本地文件系统路径**替代远程仓库,使软件包管理器直接读取本地存储的 RPM 包及元数据。其核心依赖以下机制: 1. **仓库元数据索引** 本地目录需包含 `repodata/` 子目录,内含 `primary.xml`(软件包清单)、`filelists.xml`(文件列表)、`other.xml`(依赖关系)等索引文件[^3]。YUM 通过解析这些文件建立依赖关系图谱。 $$ \text{本地结构示例} = \begin{cases} \text{/mnt/cdrom/Packages/} & \text{(RPM 包存储)} \\ \text{/mnt/cdrom/repodata/} & \text{(元数据索引)} \end{cases} $$ 2. **路径映射规则** 在 `.repo` 配置文件中通过 `baseurl` 指定本地路径(如 `file:///mnt/cdrom`),YUM 客户端将自动拼接 `repodata` 路径完成元数据加载[^2]。 3. **依赖解析算法** YUM 使用 SAT 求解器(如 `libsolv`)对比本地仓库元数据与系统已安装软件状态,递归计算满足依赖的最小安装集合[^3]。 #### 二、关键组件交互 | 组件 | 功能说明 | |---------------------|------------------------------------------------------------------------| | `/etc/yum.repos.d/*.repo` | 定义仓库名称、启用状态、GPG 校验等参数,优先级由 `priority` 字段控制[^2] | | `yum-metadata-parser` | 解析 `repodata` 中的 XML 文件,生成内存中的软件包数据库 | | `rpm` 命令 | 最终执行 RPM 包的安装/卸载操作,依赖 YUM 传递的参数列表 | #### 三、完整工作流程 1. **挂载介质** 通过 `mount /dev/sr0 /mnt/cdrom` 将光盘或 ISO 镜像挂载到本地目录,使文件系统可访问[^4]。 2. **元数据加载** - 执行 `yum makecache` 时,YUM 读取 `baseurl` 路径下的 `repodata`,生成 `/var/cache/yum/` 中的缓存文件[^1] - 缓存机制减少重复解析 XML 的开销,提升后续操作速度 3. **事务处理** 用户执行安装命令(如 `yum install httpd`)后: ```mermaid graph LR A[解析命令] --> B[查询缓存元数据] B --> C{依赖是否满足?} C -->|是| D[生成事务队列] C -->|否| E[报错终止] D --> F[调用rpm安装] ``` #### 四、与网络的差异对比 | 特性 | 本地 | 网络 | |--------------------|-------------------------------|-------------------------------| | 数据来 | 本地文件系统 | HTTP/FTP 服务器 | | 速度 | 无网络延迟,读取速度快 | 受带宽和服务器响应影响 | | 更新频率 | 需手动同步新介质 | 自动获取最新版本 | | 典型场景 | 无外网环境/定制化部署 | 常规在线更新 | #### 五、配置验证与调试 1. **检查仓库状态** ```bash yum repolist all # 显示所有仓库的启用状态 ``` 2. **手动解析元数据** ```bash createrepo --update /mnt/cdrom # 强制重建元数据索引(适用于自定义仓库) ``` 3. **日志分析** 关键日志文件:`/var/log/yum.log`,可查看依赖解析失败的具体原因 #### 六、注意事项 1. **挂载持久化** 需在 `/etc/fstab` 添加挂载项,否则重启后需重新挂载: ```bash echo "/dev/sr0 /mnt/cdrom iso9660 defaults 0 0" >> /etc/fstab ``` 2. **路径转义** 若路径包含空格或特殊字符,需使用 `\` 转义(如 `file:///media/CentOS\ 7/`)[^2]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值