如何在没有外网的情况下,通过Centos系统光盘创建yum源,结果rpm包依赖性问题
相信作为Linux系统管理员在安装rpm包的过程中或多或少都会遇到软件依赖性。通常我们的解决方法:
1.通过yum工具连接外网上的yum服务器来安装,自动帮忙解决软甲依赖性。
该方法能够快速解决软件依赖性问题,但是解决的前提是生产环境中有外光。如果我们的生产环境不允许连接或者不具备外网条件,基本上就没有办法解决了。
2.手动安装依赖性软件。这种方法较为原始的安装方法,只适合对软件依赖性较少的情况,如果所安装的软件所依赖的软件较多,等你把软件安装好了,估计黄花菜都凉了
3.实在没有别的办法,只能来简单粗暴的方式,重装系统,把所需要的软件在定制系统时全部安装。如果你真的用来这种方法,我只能在心里默默的鄙视你了。
如何直接上门遇到的问题呢?很简单,只需要通过更改yum相关的配置即可。工作将系统盘作为yum源即可。
Yum工作原理
yum 运行原理
yum的工作需要两部分来合作,一部分是yum服务器,还有就是client的yum工具。下面分别介绍两部分工作原理。
- yum服务器
所有要发行的rpm包都放在yum服务器上以提供别人来下载,rpm包根据kernel的版本号,cpu的版本号分别编译发布。yum服务器只要提供简单的下载就可以了,ftp或者httpd的形式都可以。yum服务器有一个最重要的环节就是整理出每个rpm包的基本信息,包括rpm包对应的版本号,conf文件,binary信息,以及很关键的依赖信息。在yum服务器上提供了createrepo工具,用于把rpm包的基本概要信息做成一张"清单",这张"清单""就是描述每个rpm包的spec文件中信息。
- yum client端
client每次调用yum install或者search的时候,都会去解析/etc/yum.repos.dm目录下面所有以.repo结尾的配置文件,这些配置文件指定了yum服务器的地址。yum会定期去"更新"yum服务器上的rpm包"清单",然后把"清单"下载保存到yum自己的cache里面,根据/etc/yum.conf里配置(默认是在/var/cache/yum下面),每次调用yum装包的时候都会去这个cache目录下去找"清单",根据"清单"里的rpm包描述从而来确定安装包的名字,版本号,所需要的依赖包等,然后再去yum服务器下载rpm包安装。(前提是不存在rpm包的cache)
注:有兴趣的朋友可以更深入的了解一下搭建yum服务器
通过yum工作原理可以知道,客户端通过制定的yum服务器来访问和下载依赖性软件。那么我们能不能指定本地的yum源为本地地址,通过调用本地的资源来解决软件依赖性呢?答案是可以。
解决思路:
Centos系统盘里面自带所有预安装软件,让yum调用系统盘中的软件包资源,来替代远端服务器的功能。
Yum通过调用yum配置文件中的服务器地址下载人rpm依赖性包,我们可以将挂载系统盘,通过yum配置文件将服务器地址更改指向挂载的系统盘目录。当然如果有条件的话可以自己搭建一个内部yum服务器,可以解决多台服务器的rpm软件依赖性问题,可以节省很多时间。
配置方法:
1. 将/etc/yum.repos.d 目录下问的文件备份,依然移除除了Centos-Media.repo的其他文件。Yum的服务器配置相当文档放置在如下图中。虽然可以通过其它文档,让yum访问本地目录,但是通过实际的操作发现。尽管做了配置,但是更新时依旧会报错,所以建议大家最好现在备份,然后移除不需要配置的文档来操作。
2.配置Centos-Media.repo。默认的配置文档如下,我们需要参数“enable=0”更改问“enable=1”,启用该文档。
3.挂载系统盘到配置的目录下,我们知道上图的配置文档的目录有/media/Centos,我们可以将系统光盘挂载到该目录下即可。具体怎么挂载,这里就不做详细的介绍。
4.经过以上步骤的配置,即可安装软件,但是需要注意的是,我们需要通过安装光盘中的软件来操作,不然系统提示找不到。毕竟我们只是制定了相关的资源路径,并不是搭建一个yum服务器。
转载于:https://blog.51cto.com/koala003/1630149