0


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.8

ping -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.org

nslookup 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.cfg

sudo 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们解决问题。怎么做你懂的 😉

标签: centos linux 运维

本文转载自: https://blog.csdn.net/weixin_46059351/article/details/140649426
版权归原作者 墨萦 所有, 如有侵权,请联系我们删除。

“CentOS 7 - Yum无法安装的超全解决办法”的评论:

还没有评论