魏晓东 发表于 2024-8-13 10:50:37

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

这步大概是大多数人存在的标题,输出应该类似:
   
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

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

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

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

输出如下:
   
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.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们办理标题。怎么做你懂的
页: [1]
查看完整版本: CentOS 7 - Yum无法安装的超全办理办法