成功解决:“Could not resolve host: mirrorlist.centos.org; Unknown error“

  1. 检查网络连接

    • 确保你的系统网络连接正常,并且能够访问互联网。你可以使用 ping 命令来测试网络连接:

      ping google.com
      ping mirrorlist.centos.org
      
      
  2. 检查DNS配置

    • 确保DNS配置正确,可以尝试将 /etc/resolv.conf 文件中添加或修改DNS服务器,例如Google的公共DNS:
      添加以下内容:

      sudo nano /etc/resolv.conf
      
      
      nameserver 8.8.8.8
      nameserver 8.8.4.4
      
      
    • 保存并退出,然后再次尝试 sudo yum upgrade。

  3. 暂时禁用IPv6

    • 有时IPv6配置问题也会导致解析失败,可以尝试暂时禁用IPv6:

      sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
      sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
      
      
    • 再次尝试 yum upgrade

  4. 临时禁用导致问题的仓库

    • 如果某个特定的仓库有问题,可以尝试在执行命令时禁用该仓库。例如:

      sudo yum --disablerepo=base upgrade
      
      
  5. 手动设置baseurl

    • 如果 mirrorlist.centos.org 仍然不可用,可以手动设置仓库的baseurl。编辑 /etc/yum.repos.d/CentOS-Base.repo 文件:
      找到类似以下的部分并修改:
      注意将 mirrorlist 替换为 baseurl 并设置你可以访问的镜像地址。

      sudo nano /etc/yum.repos.d/CentOS-Base.repo
      
      

      这是我编辑之后的内容:

      # CentOS-Base.repo
      #
      # The mirror system uses the connecting IP address of the client and the
      # update status of each mirror to pick mirrors that are updated to and
      # geographically close to the client.  You should use this for CentOS updates
      # unless you are manually picking other mirrors.
      #
      # If the mirrorlist= does not work for you, as a fall back you can try the
      # remarked out baseurl= line instead.
      #
      #
      
      [base]
      name=CentOS-$releasever - Base
      #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
      baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
      
      #released updates
      [updates]
      name=CentOS-$releasever - Updates
      #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
      baseurl=http://vault.centos.org/7.9.2009/updates/x86_64/
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
      
      #additional packages that may be useful
      [extras]
      name=CentOS-$releasever - Extras
      #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
      baseurl=http://vault.centos.org/7.9.2009/extras/x86_64/
      gpgcheck=1
      gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
      
  6. 重新安装yum插件

    • 有时,重新安装yum插件可能解决问题:

      sudo yum clean all
      sudo yum makecache
      
      

以下是一些其他的解决思路

  1. 检查网络连接
    确保你的机器是联网的。你可以使用以下命令测试网络连接:

    ping -c 4 google.com
    

    如果无法ping通,说明网络连接有问题,需要解决网络连接问题。

  2. 检查DNS配置
    确保DNS服务器配置正确。你可以查看 /etc/resolv.conf 文件,确保里面有有效的DNS服务器配置,例如:

    cat /etc/resolv.conf
    

    输出应该类似如下:

    nameserver 8.8.8.8
    nameserver 8.8.4.4
    

    这两个IP地址是Google的公共DNS服务器,你可以添加或更新你的DNS服务器配置。

  3. 刷新DNS缓存
    有时缓存的DNS记录可能已经无效,可以尝试刷新DNS缓存:

    sudo systemctl restart NetworkManager
    

    或者使用以下命令(如果你使用的是NetworkManager管理网络):

    nmcli general reload
    
  4. 测试DNS解析
    你可以手动测试DNS解析来确认问题,例如:

    nslookup mirrorlist.centos.org
    

    或者:

    dig mirrorlist.centos.org
    

    这会显示DNS解析的详细信息,如果解析失败,说明DNS配置仍有问题。

  5. 更改镜像源
    有时特定的镜像服务器可能宕机或者有问题。你可以尝试更改YUM或DNF的镜像源配置文件,例如:
    编辑 /etc/yum.repos.d/CentOS-Base.repo 文件,修改 mirrorlistbaseurl,指向特定的镜像源。例如:

    [base]
    name=CentOS-$releasever - Base
    baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    

    另一个可以参考的镜像源网址是:http://mirrors.163.com/。

  6. 联系网络管理员
    如果你在企业或组织内部网络环境中,可能网络策略或防火墙限制了对外部DNS服务器的访问,建议联系网络管理员排查。

按上述步骤逐步排查,一般可以解决DNS解析导致的问题。

你可能感兴趣的:(各种报错,bug解决方案专栏,centos,linux,运维)