CentOS 7 - Yum无法安装的超全解决办法

【本文首发于CSDN个人博客,转载请注明出处。】

欢迎交流想法!若有错误请指出。P.S. 欢迎【关注&点赞&收藏】哈~


本文的初始动机在于我最近在自学Dockers,没想到还没开始安装dockers的包就被创飞了,在VMware虚拟机上花了四五个小时终于解决了yum无法安装的问题。本贴全是血泪经验我哭死。

下面的内容针对由于无法安装yum的各种报错提供全面check的方法。尤其是如果你的报错是
Cannot find a valid baseurl for repo: base/7/x86_64,建议查看全文。

本人的虚拟机使用CentOS7版本 (以下内容应该适用于CentOS8及以下版本),终端使用Xshell操作(不过终端用啥都行啦哈哈)。

两大原因判断

网络原因

尝试 ping 8.8.8.8ping -c 4 www.baidu.com

输出类似:

64 bytes from lga25s80-in-f14.1e100.net (142.251.40.142): icmp_seq=1 ttl=54 time=31.9 ms
64 bytes from lga25s80-in-f14.1e100.net (142.251.40.142): icmp_seq=2 ttl=54 time=50.8 ms
64 bytes from lga25s80-in-f14.1e100.net (142.251.40.142): icmp_seq=3 ttl=54 time=36.5 ms
64 bytes from lga25s80-in-f14.1e100.net (142.251.40.142): icmp_seq=4 ttl=54 time=43.9 ms

否则尝试重启网络设置:sudo systemctl restart network
然后检查configure文件是否能成功显示IP:ip addr show enp0s3 (enp0s3可能是ens33文件名,按自己情况修改)。

DNS原因

尝试 dig mirrorlist.centos.orgnslookup mirrorlist.centos.org

输出类似:

Server: 8.8.8.8
Address: 8.8.8.8#53

否则跟我一样是DNS问题了。继续进一步检查。

建议完成下面每一步都去 “写在结尾” 一章跑一下前两步看有没有解决。

所有与yum相关的文件内容与检查

请确保与yum相关文件与我的内容类似!

如果需要修改文件:使用 vi 文件路径 指令(e.g. vi /etc/resolv.conf),打开后使用 i进行修改。完成修改后使用Esc:wq 和 回车键 保存修改。

检查网络配置 cat /etc/sysconfig/network-scripts/ifcfg-ens33

输出类似:

TYPE=“Ethernet”
PROXY_METHOD=“none”
BROWSER_ONLY=“no”
BOOTPROTO=“static”
DEFROUTE=“yes”
IPV4_FAILURE_FATAL=“no”
IPV6INIT=“yes”
IPV6_AUTOCONF=“yes”
IPV6_DEFROUTE=“yes”
IPV6_FAILURE_FATAL=“no”
IPV6_ADDR_GEN_MODE=“stable-privacy”
NAME=“ens33”
UUID=“014b345b-23bc-4655-80b2-9ee4ea58c54f”
DEVICE=“ens33”
ONBOOT=“yes”
IPADDR=“172.20.10.14”
GATEWAY=“172.20.10.1”
DNS1=“8.8.8.8”
DNS2=“8.8.4.4”
NETMASK=“255.255.255.0”

标红的请自己添加。其中 IPADDR 通过ip addr查找。GATEWAY 把 IPADDR 最后一位改成1。
输出类似:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:48:0e:9d brd ff:ff:ff:ff:ff:ff
inet 172.20.10.14/28 brd 172.20.10.15 scope global noprefixroute ens33
valid_lft forever preferred_lft forever

P.S. DNS1和2我使用的是Google的。不成功的话可以只改成 DNS1=“114.114.114.114” 试试。

对比YUM文件夹内容 ls /etc/yum.repos.d/ (注:此步非必要步骤,我只是自己会检查一下)

输出类似:

CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo CentOS-x86_64-kernel.repo
CentOS-Debuginfo.repo CentOS-Sources.repo docker-ce.repo

多的可以自己用 sudo rm /etc/yum.repos.d/文件名 删掉。

检查DNS设置 cat /etc/resolv.conf

输出类似:

nameserver 8.8.8.8
nameserver 8.8.4.4

检查仓库配置 cat /etc/yum.repos.d/CentOS-Base.repo

这步可能是大多数人存在的问题,输出应该类似:

[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/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/centos/$releasever/updates/$basearch/

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/centos/$releasever/extras/$basearch/

gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/centosplus/$basearch/

gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

两个检查点:
①comment mirrorlist 且 comment out baseurl
②由于centos7在24年六月停更新版本了,所以记得把baseurl里的mirror改成vault

Docker仓库配置 cat /etc/yum.repos.d/docker-ce.repo

输出如下:

[docker-ce-stable]
name=Docker CE Stable - x86_64
baseurl=https://download.docker.com/linux/centos/7/x86_64/stable/
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

自己把上面内容完全粘进去。

其他检查内容

尝试禁用ipv6只用ipv4

如果检查 curl -v http://vault.centos.org/centos/7/os/x86_64/repodata/repomd.xml 运行不成功但是 curl -4 -v http://vault.centos.org/centos/7/os/x86_64/repodata/repomd.xml,则可以尝试修改通过ipv4下载yum。

正确输出类似:

  • About to connect() to vault.centos.org port 80 (#0)
  • Trying 18.173.219.30…
  • Connected to vault.centos.org (18.173.219.30) port 80 (#0)
    GET /centos/7/os/x86_64/repodata/repomd.xml HTTP/1.1
    User-Agent: curl/7.29.0
    Host: vault.centos.org
    Accept: /
    < HTTP/1.1 301 Moved Permanently
    < Server: CloudFront
    < Date: Tue, 23 Jul 2024 17:27:51 GMT
    < Content-Type: text/html
    < Content-Length: 167
    < Connection: keep-alive
    < Location: https://vault.centos.org/centos/7/os/x86_64/repodata/repomd.xml

修改使用ipv4有两步:

  1. cat /etc/yum.conf

plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
ip_resolve=4

  1. sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX=“rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet ipv6.disable=1

完成上面两步后继续操作sudo grub2-mkconfig -o /boot/grub2/grub.cfgsudo reboot重启虚拟机。

尝试再跑一下dhclient

写在结尾

如果成功的话记得操作下面几步完成yum安装噢。
sudo yum clean all
sudo yum makecache
sudo yum install bind-utils
sudo yum update
可以通过yum --version检查是否安装成功

再后面就是安装dockers sudo yum install docker-ce docker-ce-cli containerd.io blah blah 我就不写了哈哈。

希望上面的能帮助uu们解决问题。怎么做你懂的 😉

  • 48
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值