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

墨萦 2024-08-20 09:37:01 阅读 73

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

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


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

下面的内容针对由于无法安装yum的各种报错提供全面check的方法。尤其是如果你的报错是

Cannot find a valid baseurl for repo: base/7/x86_64,建议查看全文。

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

文章目录

两大原因判断网络原因DNS原因

所有与yum相关的文件内容与检查检查网络配置 `cat /etc/sysconfig/network-scripts/ifcfg-ens33`对比YUM文件夹内容 `ls /etc/yum.repos.d/` (注:此步非必要步骤,我只是自己会检查一下)检查DNS设置 `cat /etc/resolv.conf`检查仓库配置 `cat /etc/yum.repos.d/CentOS-Base.repo`Docker仓库配置 `cat /etc/yum.repos.d/docker-ce.repo`

其他检查内容尝试禁用ipv6只用ipv4尝试再跑一下`dhclient`

写在结尾

两大原因判断

网络原因

尝试 <code>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.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有两步:

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

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。