ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

YUM变量缺失导致的问题小记

2021-03-22 11:52:11  阅读:267  来源: 互联网

标签:x86 centos 404 yum release YUM 64 缺失 小记


 田振 360云计算 

图片

女主宣言:做为运维工程师最基本的素质就是应该沉着冷静,遇事不能慌。没啥解决不了的问题嘛!然而冰冻三尺非一日之寒,经验要靠平时不断的积累,HULK团队当然积累了不少的一线经验。今天就先为大家分享一个日常运维当中使用Yum命令遇到的小问题,后期将会陆续为大家分享一些实用的运维经验干货,敬请期待。PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!


问题现象

有一次在用yum安装软件包的时候遇到了一个“蛋疼”的现象,不管安装什么软件包都是提示404,出现404的第一个想法就是:“难道yum源出问题了吗?”

如下所示:

Loaded plugins: fastestmirror, security
http://***.***.360.cn:/addops/%24releasever/os/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: ADDOPS-base. Please verify its path and try again

报错信息:

[Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"


问题分析

仔细看404的报错URL中,有一个变量“%24releasever”格式不对,没有正常的显示出变量值,但是后边的os、x86_64却能显示出来。因此可以判断这个404的报错应该是这个变量缺失引起的。

排查问题


“%24releasever”这个变量到底是哪里设置的呢? 搜集yum相关配置文件发现了一些信息。

如下所示:image.png



查完配置文件后,发现releasever这个变量的值其实指的就是系统版本号。

那么这个变量是从哪里定义的?


查看yum.conf配置文件,发现了一些信息。

如下所示:

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release


distroverpkg的值设置的应该就是系统版本信息。可是centos-release这个值看不出来有啥异常啊,既然是系统版本信息,小编第一个联想到的就是/etc/issue这个文件,于是查看系统的issue文件发现果然不正常,而rpm -qf /etc/issue 查看其他正常机器,继续排查发现这个文件其实指向的就是centos-release-6-2.el6.centos.7.x86_64这个RPM包。而系统中确实没有这个软件包。


至此,基本就可以确定了:“distroverpkg设置的就是centos-release这个软件包”


解决问题:

由于目前系统中没有安装centos-release这个软件包,导致yum install总是404,可是为了安装centos-release这个软件包,临时把yum源配置文件中系统版本号的变量$releasever手动修改成6。这样yum install的时候就不会出现404了。待成功安装centos-release后,改回$releasever即可。


技巧

小编把一些排查问题中实用的技巧贴到这里,分享给大家:

1. /usr/bin/python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'# 这个Python命令会显示yum仓库中变量的赋值情况正常情况下会显示如下信息:{'arch': 'ia32e',
 'basearch': 'x86_64',
 'releasever': '6',
 'uuid': '89949ccb-38ce-4dcf-8ed1-bab80f515481'}
2. yum whatprovides centos-release 
# 这个yum命令会显示centos-release的完整依赖情况
如下所示:

centos-release-6-6.el6.centos.12.2.x86_64 : CentOS release file
Repo        : base-6.6
Matched from:


centos-release-6-2.el6.centos.7.x86_64 : CentOS release file
Repo        : installed
Matched from:
Other       : Provides-match: centos-release


总结

Yum命令做为运维工程师的基本技能,一定要灵活掌握!团队内一个资深老司机经常说“身为一名运维工程师,如果对yum命令和rpm包了解不够的话,那就不是一个称职的工程师”


标签:x86,centos,404,yum,release,YUM,64,缺失,小记
来源: https://blog.51cto.com/15127564/2668144

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有