Linux yum源问题基础分析和排查

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: yum源问题基础分析和排查

前言

Linux使用过程中,通常需要安装不少公共软件、工具、补丁和升级包等,系统本身提供了比较便利的方式,
那就是yum(REHL、CentOS、Fedora等)/apt-get(Ubuntu、Debian等)/zypp(openSUSE),可以通过命令行直接从软件源(yum源)下载。

Yum(全称 Yellow Dog Updater)是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。 
针对yum/apt-get命令的使用不多细说,大家可以通过man命令来查看使用方式,这里我们主要讨论yum源相关问题。 
 

基本知识

Linux通过yum/apt-get/zypper安装软件的过程简而言之就是读取配置文件和请求yum源。

yum源

1. 阿里云内网yum源

经典网络:
mirrors.aliyuncs.com
VPC网络:
mirrors.cloud.aliyuncs.com
sg.mirrors.cloud.aliyuncs.com
 

2. 阿里云公网yum源

mirrors.aliyun.com
 

3. 其他公网yum源

e.g.
mirrors.163.com
mirrors.soho.com
mirrors.fedoraproject.org
 

yum源配置文件

执行命令时候从对应路径配置文件读取yum源地址信息:
yum - /etc/yum.repos.d/*
apt-get - /etc/apt/sources.list
zypper - /etc/zypp/repos.d/*
 

yum源自动更新工具

 
update_source.sh脚本可以下载下来直接执行一下或者打开看看具体是怎么写的,这里截取脚本中部分信息,以便大家快速了解。
 
#检查OS信息
check_os_release()
#基于操作系统修改更新源配置文件,这里列出部分系统:rhel7/ubuntu10/opensuse
modify_rhel7_yum()
{
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -qO /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean metadata
yum makecache
cd ~
}
update_ubuntu10_apt_source()
{
echo -e "\033[40;32mBackup the original configuration file,new name and path is /etc/apt/sources.list.back.\n\033[40;37m"
cp -fp /etc/apt/sources.list /etc/apt/sources.list.back
cat > /etc/apt/sources.list <<EOF
#ubuntu
deb http://cn.archive.ubuntu.com/ubuntu/ maverick main restricted universe multiverse
deb-src http://cn.archive.ubuntu.com/ubuntu/ maverick main restricted universe multiverse
#163
deb http://mirrors.163.com/ubuntu/ maverick main universe restricted multiverse
deb-src http://mirrors.163.com/ubuntu/ maverick main universe restricted multiverse
deb http://mirrors.163.com/ubuntu/ maverick-updates universe main multiverse restricted
deb-src http://mirrors.163.com/ubuntu/ maverick-updates universe main multiverse restricted
#lupaworld
deb http://mirror.lupaworld.com/ubuntu/ maverick main universe restricted multiverse
deb-src http://mirror.lupaworld.com/ubuntu/ maverick main universe restricted multiverse
deb http://mirror.lupaworld.com/ubuntu/ maverick-security universe main multiverse restricted
deb-src http://mirror.lupaworld.com/ubuntu/ maverick-security universe main multiverse restricted
deb http://mirror.lupaworld.com/ubuntu/ maverick-updates universe main multiverse restricted
deb http://mirror.lupaworld.com/ubuntu/ maverick-proposed universe main multiverse restricted
deb-src http://mirror.lupaworld.com/ubuntu/ maverick-proposed universe main multiverse restricted
deb http://mirror.lupaworld.com/ubuntu/ maverick-backports universe main multiverse restricted
deb-src http://mirror.lupaworld.com/ubuntu/ maverick-backports universe main multiverse restricted
deb-src http://mirror.lupaworld.com/ubuntu/ maverick-updates universe main multiverse restricted
EOF
apt-get update
}
update_opensuse_source()
{
mv /etc/zypp/repos.d/* /tmp/
zypper addrepo -f http://mirrors.aliyun.com/opensuse/distribution/13.1/repo/oss/ openSUSE-13.1-Oss
zypper addrepo -f http://mirrors.aliyun.com/opensuse/distribution/13.1/repo/non-oss/ openSUSE-13.1-Non-Oss
zypper addrepo -f http://mirrors.aliyun.com/opensuse/update/13.1/ openSUSE-13.1-Update-Oss
zypper addrepo -f http://mirrors.aliyun.com/opensuse/update/13.1-non-oss/ openSUSE-13.1-Update-Non-Oss
zypper addrepo -f http://mirrors.aliyun.com/opensuse/distribution/13.1/repo/oss/ openSUSE-13.1-Oss-aliyun
zypper addrepo -f http://mirrors.aliyun.com/opensuse/distribution/13.1/repo/non-oss/ openSUSE-13.1-Non-Oss-aliyun zypper addrepo -f http://mirrors.aliyun.com/opensuse/update/13.1/ openSUSE-13.1-Update-Oss-aliyun
zypper addrepo -f http://mirrors.aliyun.com/opensuse/update/13.1-non-oss/ openSUSE-13.1-Update-Non-Oss-aliyun
}
#脚本执行部分,核实当前是否在运行,检查用户是否是root,检测操作系统并修改配置文件
####################Start###################
#check lock file ,one time only let the script run one time
#check user
echo -e "\033[1;40;31mError: You must be root to run this script, please use root to install this script.\n\033[0m"
#modify source configuration
echo -e "\033[40;32mStep 3.Begin to modify the source configration file and update.\n\033[40;37m"
AI 代码解读
 
 

问题排查

1. 核实报错信息

各类问题排查第一步都是先弄清楚具体问题,有报错的提供报错信息或者截图,具体跑什么命令也一并核实清楚。也可以进一步核实确认一下之前是否正常,具体出现/发现问题的时间点。
 

2. 运行update_source.sh脚本

运行阿里云ECS Linux软件源更新工具这一步操作比较简单,我们可以直接方便快捷地完成,一般都建议先尝试运行脚本,再核实问题是否依旧。
 

3. 登陆排查

如果基于脚本无法解决或者脚本运行异常,那么建议登陆进行排查,排查操作包括但不限于以下一些:
a. 排除本地配置问题, 检查 /etc/yum.repos.d/ 目录下是否含有相关的 *.repo 文件
b. 基于网络类型实际查看各个yum源能否ping通,基于url测试80、443端口能否telnet通。
c.  脚本运行异常的,可用根据异常响应修改脚本或者直接根据操作系统,找到并执行脚本中对应操作系统更新软件源的命令部分。
d 如果核实是源有问题,提交工单反馈,并尝试临时更换其他公共源。
f. yum clean all清除本地缓存
e. 测试机对比测试/复现,一般针对特定地域yum源问题或者新建ECS实例yum异常。


常见问题

1. 无法更新,同时脚本执行失败,OS无法识别。

执行脚本报错The OS does not identify, So this script is not executed.
  66430736f5f7680d82ac30755eb8cf802e668146

当前系统版本可能并没有在脚本中列出,遇上类似情况,参考脚本源信息直接将源写入配置文件/etc/apt/sources.list。


2. yum安装报错The requestd URL returned error: 404。

考虑本地cache过期引起,尝试yum clean all清理本地缓存。

3. apt-get update失败,卡在某个地方

执行apt-get update后,发现pending在 xx% [Waiting for headers]。后续可能出现一些404等错误码。
73c881cb490a11aaa293c6f001fa1c58f05bcfc0

Strace跟踪命令执行,能看到请求路径找不到,且卡住的时候有请求调用在重试和超时
59645b1733c3cdeae02b2401c32316e670bb35e7

此时可以尝试更换阿里云公网yum源或者使用第三方公共源对比尝试。
也可以尝试执行以下命令清理后再重试。
rm -rf /var/lib/apt/lists/partial/*
rm -rf /var/lib/apt/lists/*
apt-get clean
apt-get update

4. 执行yum时候出现502报错

执行yum install看到请求yum源会有HTTP 502错误。
[Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 502 Bad Gateway"
7bc40413d56a417101e3dcb73f2ef444aa7f7352

此时建议实际测试到yum源url访问是否正常,设置的yum源是否正常。也可以同步测试其他yum源。如果定位到是请求的阿里云yum源有问题,那么可以提交工单反馈。



相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
尘轩
+关注
目录
打赏
0
0
0
0
227
分享
相关文章
Linux错误排查:解决Ubuntu 20.4执行sudo apt-get update时出现的libnettle.so.6错误。
很有可能在你得到解决方案时,你也学到了不少Linux修复技巧。祝你处理计算机问题时顺利如麻!永远记得,各种问题总是像老鼠一样从意想不到的地方冒出来。但记住,不管它们跑到哪里,最终都逃不过你的捕鼠器。盖起你的计算机,拾起你的代码,大步向前!
43 28
Linux错误排查:解决Ubuntu 20.4执行sudo apt-get update时出现的libnettle.so.6错误。
很有可能在你得到解决方案时,你也学到了不少Linux修复技巧。祝你处理计算机问题时顺利如麻!永远记得,各种问题总是像老鼠一样从意想不到的地方冒出来。但记住,不管它们跑到哪里,最终都逃不过你的捕鼠器。盖起你的计算机,拾起你的代码,大步向前!
53 18
|
9天前
|
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
55 19
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
185 25
PCIe 以太网芯片 RTL8125B 的 spec 和 Linux driver 分析备忘
本文详细介绍了 Realtek RTL8125B PCIe 以太网芯片的规格以及在 Linux 中的驱动安装和配置方法。通过深入分析驱动源码,可以更好地理解其工作原理和优化方法。在实际应用中,合理配置和优化驱动程序可以显著提升网络性能和稳定性。希望本文能帮助您更好地使用和管理 RTL8125B,以满足各种网络应用需求。
152 33
用的到linux-tomcat端口占用排查-Day5
通过本文的介绍,详细讲解了在CentOS 8系统上排查和解决Tomcat端口占用问题的方法。从使用 `netstat`、`lsof`和 `ss`命令检查端口占用情况,到使用 `ps`和 `top`命令查找和停止占用端口的进程,再到修改Tomcat端口配置,最后介绍了自动化脚本的方法。希望本文能帮助系统管理员和开发者有效地解决端口占用问题,确保Tomcat服务器的正常运行。
39 11
Splunk Enterprise 9.4.1 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
Splunk Enterprise 9.4.1 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
29 0
Splunk Enterprise 9.4.1 (macOS, Linux, Windows) 发布 - 机器数据管理和分析
Linux--深入理与解linux文件系统与日志文件分析
深入理解 Linux 文件系统和日志文件分析,对于系统管理员和运维工程师来说至关重要。文件系统管理涉及到文件的组织、存储和检索,而日志文件则记录了系统和应用的运行状态,是排查故障和维护系统的重要依据。通过掌握文件系统和日志文件的管理和分析技能,可以有效提升系统的稳定性和安全性。
81 7
启用Linux防火墙日志记录和分析功能
为iptables启用日志记录对于监控进出流量至关重要
102 1
linux异常一:feng 不在 sudoers 文件中,此事将被报告。yum提示Another app is currently holding the yum lock; waiting for
这篇文章介绍了在CentOS 7系统中安装Docker时遇到的两个常见问题及其解决方法:用户不在sudoers文件中导致权限不足,以及yum被锁定的问题。
92 2
linux异常一:feng 不在 sudoers 文件中,此事将被报告。yum提示Another app is currently holding the yum lock; waiting for

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等