您的位置:首页 > 运维架构 > Linux

CentOS系统上配置YUM仓库

2014-02-26 10:41 295 查看
背景:
使用yum工具安装软件包(packages)有两个前提:
1,存在有效的yum配置文件
2,在yum配置文件指明有效的yum仓库(repository)。

yum的配置文件有两类:主配置文件及片段配置文件
CentoOS6.4系统上,主配置文件为/etc/yum.conf,主配置文件通常用来作为yum的全局配置,对其它所有yum仓库都生效;
这些全局配置都是定义在[main]段中,常用的配置说明如下:
[main]
cachedir=/var/cache/yum/$basearch/$releasever   ##指明yum的缓存目录
keepcache=0                                ##定义主机下载rpm包至本地完成安装后package是否删除
debuglevel=2                               ##定义调试级别,级别越高,调试信息越详细
logfile=/var/log/yum.log             ##指明yum安装的log文件
exactarch=1                                 ##定义下载rpm包时是否需要和主机平台完全精确匹配
obsoletes=1                                 ##定义update时,是否更新老版本的package
gpgcheck=1                                 ##定义下载rpm包安装前是否检查来源合法性

CentOS6.4系统上,片段配置文件的目录为:/etc/yum.repose.d,通常通过此目录下的.repo结尾的文件来定义yum仓库
.reo文件格式
[repository_ID]             ##每一个[]代表一个仓库,其中内容即为仓库ID名,通常是仓库名
name=                     ##通常是仓库描述信息  (=号前后不能有空格,后面内容可以有)
baseurl=                  ## yum仓库的路径
enabled={1|0}          ##是否启用此仓库,1 表示启用(默认是1)
gpgcheck={1|0}       ##是否检查软件包来源合法性,默认1
gpgkey=                 ##若检查gpg,指定密钥文件的路径
cost=                      ##指定代价(默认2000)即当有多个yum仓库时,系统会选择使用代价小的

对于红帽系列的系统,原光盘本身就是一个有效yum仓库,将其(/dev/cdrom)挂载在/media/cdrom下,然后启用此仓库。即可拿来使用。
操作环境:
VmwareWorkstation 9,CentOS 6.4
步骤:
1,虚拟机中装载系统镜像

2,将光盘挂载在/media/cdrom目录下



查看光盘目录,已存在repodata目录,则意为此目录已是一个有效的yum数据库。则已满足了上述的其中一个条件,接下来查看是否存在有效的yum配置文件,其指向此yum仓库。
3,修改repo配置文件



/etc/yum.repos.d目录下默认已存在文件CentOS-Media.repo,其即为光盘yum仓库对应的yum配置文件,查看此文件,其中一项baseurl= file:///media/cdrom/,这也是为什么要将光盘挂载在/media/cdrom目录下的原因。其中enabled=0,即默认未启用光盘yum仓库。将其值修改为1,即启用此yum仓库。
4,至此,yum工具使用的两个前提条件都已满足。
测试是否可以使用:



使用yum repolist命令即可查看到已显示光盘yum仓库,id为存c6-media。
但是使用yum list all名命令查询yum仓库中所有的软件包时,命令执行失败。通过返回的信息,可得知此命令在查找yum仓库base时,由于网络故障,而终止命令。由于此实验环境中操作系统的确是未连接网络。但实验的对象为光盘作为的yum仓库c6-media,不涉及网络连接,如何解决呢?

思路1:系统默认存在配置文件CentOS-Base.repo,其中已启用了yum仓库base、extras和updates。若禁用这些yum仓库,则系统中只剩下一个可用的yum仓库c6-media,即可完成测试。
方法a: 修改配置文件名使其失效



方法b:临时禁用所有的yum仓库,只启用c6-media,用以执行yum命令



思路2:由于,命令yum list all查询的是当前系统中所有的已启用的yum仓库,如果指定只是从yum仓库c6-media中查询,即可完成实验。那么如何查询指定的yum仓库?
思路3:由于,命令yum list all查询的是当前系统中所有的已启用的yum仓库,系统默认是先从base中查找,查找失败,则自动终止命令,如何使其失败后,可以继续查找其他yum仓库?或者是优先查找指定的yum仓库?
已尝试修改cost值无效。(测试修改cost后,install package是否可以,无效)

实验中遇到的问题:
1,Q: 启用yum仓库,修改配置文件中enabled=1即可,如果通过命令实现?
A:yum--enablerepo=repoid COMMAND 此命令只是一次性启用yum仓库,执行后面的命令。并不会修改配置文件中enabled值。
2,Q: 存在多个可用的yum仓库时,yum命令如何指定yum仓库操作,如yumlist、install ?
A:#yum--disablerepo=* --enablerepo=c6-media COMMAND 此命令可以实现。
有无其他方法?
3,Q: yum list命令机制,存在多个仓库时,是如何选择的?(yum install是按cost值选择,但此实验中,base仓库中url无效时,即使修改了c6-media的cost值为最低,也无法绕过base)

注:实际应用中,可能并不会使用真正的物理光驱,此时可以把iso文件拷贝至系统中,然后挂在此iso文件使用
把iso文件挂载到某目录下(iso文件在Linux系统中,只能作为设备文件挂载读取)
#mount -t iso9660 -o loop/where/file/**.iso  /path/to/file
-t指定挂载的文件系统类型为iso9660
-o指定挂载选项为loop
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  镜像 yum仓库 yum源