CentOS yum有时出现“Could not retrieve mirrorlist ”的解决办法——resolv.conf的配置

本文介绍了在 CentOS 系统中使用 yum 工具安装 gcc-c++ 时遇到的错误及解决方法。主要原因是 DNS 解析失败导致无法获取镜像列表。通过配置 /etc/resolv.conf 文件并指定 DNS 服务器地址来解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载地址:https://blog.youkuaiyun.com/mao834099514/article/details/73470001

错误如下:

[root@localhost svn]# yum install gcc-c++.x86_64
已加载插件:fastestmirror, langpacks
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"


 One of the configured repositories failed (未知),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:

     1. Contact the upstream for the repository and get them to fix the problem.

     2. Reconfigure the baseurl/etc. for the repository, to point to a working
        upstream. This is most often useful if you are using a newer
        distribution release than is supported by the repository (and the
        packages for the previous distribution release still work).

     3. Run the command with the repository temporarily disabled
            yum --disablerepo=<repoid> ...

     4. Disable the repository permanently, so yum won't use it by default. Yum
        will then just ignore the repository until you permanently enable it
        again or use --enablerepo for temporary usage:

            yum-config-manager --disable <repoid>
        or
            subscription-manager repos --disable=<repoid>

     5. Configure the failing repository to be skipped, if it is unavailable.
        Note that yum will try to contact the repo. when it runs most commands,
        so will have to try and fail each time (and thus. yum will be be much
        slower). If it is a very temporary problem though, this is often a nice
        compromise:

            yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot find a valid baseurl for repo: base/7/x86_64

原因:没有配置resolv.conf
解决方法:
到/etc目录下配置resolv.conf加入nameserver IP,如:
nameserver 8.8.8.8
nameserver 8.8.4.4
search localdomain
保存再次运行上面的命令就可以。

/etc/resolv.conf 配置DNS 客户
文件/etc/resolv.conf 配置DNS 客户,它包含了主机的域名搜索顺序和DNS服务器的地址,每一行应包含一个关键字和一个或多个的由空格隔开的参数。
下面是一个例子文件:
**nameserver 8.8.8.8
nameserver 8.8.4.4
search localdomain**
合法的参数及其意义如下:
nameserver 表明DNS 服务器的IP 地址。可以有很多行的nameserver,每一个带一个I P 地址。在查询时就按nameserver 在本文件中的顺序进行,且只有当第一个nameserver 没有反应时才查询下面的nameserver.
domain 声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主
机进行DNS 查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( . )前面的内容。
search 它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search 声明的域中分别查找。domain 和search 不能共存;如果同时存在,后面出现的将会被使用。
sortlist 允许将得到域名结果进行特定的排序。它的参数为网络/掩码对。允许任意的排列顺序。Red Hat 中没有提供缺省的/ e t c / r e s o l v. c o n f 文件,它的内容是根据在安装时给出的选项动态创建的。

### CentOS Yum 出现 "Could not retrieve mirrorlist" 的解决方案 在CentOS系统中,当使用 `yum` 工具时遇到 "Could not retrieve mirrorlist" 错误,通常是由网络连接问题或YUM镜像列表不可用引起。以下是几种可能的解决方法: #### 方法一:修改DNS设置 如果系统的DNS配置不正确,可能会导致无法解析主机名。可以尝试将 `/etc/resolv.conf` 文件中的DNS服务器更改为公共DNS地址,例如Google DNS或阿里云DNS。 ```bash nameserver 8.8.8.8 nameserver 8.8.4.4 ``` 或者使用阿里云提供的DNS地址: ```bash nameserver 223.5.5.5 nameserver 223.6.6.6 ``` 完成更改后,重新测试 `yum` 功能[^1]。 --- #### 方法二:更新NetworkManager并重启网络服务 有时网络管理器未正常工作也可能引发此问题。可以通过以下命令更新 NetworkManager 并重启网络服务: ```bash sudo yum install -y NetworkManager sudo systemctl restart NetworkManager ``` 接着确认网络接口是否已启用自动启动功能。进入网卡配置目录并检查相关文件: ```bash cd /etc/sysconfig/network-scripts/ ls ``` 找到对应的网卡配置文件(如 `ifcfg-ens33` 或 `ifcfg-eth0`),打开它并将 `ONBOOT=no` 改为 `ONBOOT=yes` 后保存退出。最后重启网络服务: ```bash sudo systemctl restart network ``` 完成后再次运行 `yum` 命令验证效果[^4]。 --- #### 方法三:替换官方镜像源为国内镜像源 由于国际带宽限制或其他原因,访问国外镜像站点可能出现延迟甚至失败的情况。建议更换成速度更快且稳定的国内镜像源,比如清华大学开源软件镜像站、中科大镜像站或是阿里云镜像站。 以阿里云为例,操作步骤如下: 1. **备份原有仓库配置** ```bash sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup ``` 2. **下载新的Aliyun Base Repository** 对于CentOS 7版本,执行下面这条命令即可获取最新的aliyun base repository定义文件: ```bash wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo ``` 3. **清理缓存并生成新索引** 更新完毕之后记得清除旧数据以及重建数据库: ```bash sudo yum clean all sudo yum makecache ``` 通过上述方式应该能够有效改善因镜像源不稳定而导致的问题[^3]。 --- #### 方法四:手动指定镜像URL 对于某些特定场景下仍需保留原生配置但又希望临时绕过默认机制,则可以直接利用环境变量覆盖掉原有的baseurl参数值来进行单次请求处理。例如针对某个具体包的操作可这样实现: ```bash export YUM_BASE_URL=http://vault.centos.org/7.9.2009/os/$basearch/ yum --disablerepo=* --enablerepo=base install package_name ``` 这里我们指定了一个固定的archive URL作为替代来源[^2]。 --- ### 总结 以上介绍了四种不同的应对策略来克服 "Could not retrieve mirrorlist" 障碍。实际应用过程中可以根据具体情况选择合适的方法逐一排查直至恢复正常运作状态为止。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值