目录
一、问题简述
今天在使用刚刚安装的openEuler平台debug代码时发现没有安装gdb工具,欲使用命令
yum install gdb
安装,然不幸报错。
有这种的:
openeuler failed to download metadata for repo 'OS'
还有这种的:
令人眼花缭乱,且很快发现不只是针对gdb,安装所有的软件包都会返回同样的错误信息。悠悠苍天,此何错哉!我的debug之路,还没开始就已然结束了?
别急,先读读报错再说。
二、问题分析
分析错误信息,错误原因在于无法连接到服务器下载repomd.xml文件。尝试搜索openEuler, repodata, repomd.xml等关键词后,可以找到网站dl-cdn.openeuler.openatom.cn:
嗯?出现了报错信息里面的repo,可能是这里!但是版本众多,我的是哪一个呢?
两个方法!法一比较懒,谜底就在谜面上,报错信息中的“openEuler-24.03-LTS-SP1”即是当前openEuler的版本号。如果不放心可以采用更通用的法二,一行命令搞定:
cat /etc/os-release
效果如下,在VERSION一行就可以看到,与我们刚才的偷懒法得出的结论一致。
进入对应版本的资源库之后,就能发现许多错误信息里熟悉的面孔:OS、EPOL、source……我们甚至能对照着报错里下载路径的后半部分按图索骥,找到日思夜想的repomd.xml。
其实到这儿看一下URL,问题就柳暗花明了!曾经资源库的URL已被更新,但是下载的openEuler镜像里面的资源下载源并没有更新——源都是被废弃的,配置文件当然也就无从下载。
找到问题关键所在,解决起来就易如反掌了!
三、问题解决
解决此问题,只办三件事:换源!换源!还是换源!
安装时使用的是yum指令,因此我们要进入存放下载源URL的路径,查看一下里面有什么:
cd /etc/yum.repo.d
ls
在我的平台上出现了两个文件:
好嘛,看这被废弃的“repo.open.org”我就知道我找对地儿了。那接下来便是大刀阔斧地改!
首先来第一个文件:
vi openEuler.repo
进入之后按下I键开始编辑。这份文件改成下面的样子就行,重点关注所有的baseurl和gpgkey(其余项我给删除了但貌似没什么影响,不放心可以先只改baseurl和gpgkey试试)。
这里提一句,$basearch指的是系统硬件架构(CPU指令集),可以通过在命令行输入arch查看。我的平台是x86_64,改的时候对照着刚刚找的官网资源库的路径看看,也刚好能对上。所以我们实际要动的就是路径版本号之前的部分(下图红框部分)。改动完毕之后按下esc,再输入:wq即可。
同样的方法我们进入另一份文件修改(输入文件名时直接输入repo后按下Tab键补全即可):
vi repo.openeuler.org_openeuler-24.03-LTS-SP1_OS_x86_64.repo
进去之后同样的操作修改成下面的模样,注意修改完成后还是别忘了先esc再:wq保存退出。
至此,我们的问题就得到解决啦!不放心?没关系,我们安装一个zsh包测试一下换源结果,输入命令:
yum install zsh
意料之中的结果:
大功告成!!!