CentOS7 yum安装软件报错,yum源更换教程
前言
CentOS7 默认的 yum 源是国外的,装软件特别慢,有时候还报错 "Could not resolve host" 或者 "Failed to connect"。换个国内源就好了,速度飞快。本文就讲一下怎么换 yum 源。
报错现象
执行 yum install xxx 的时候,报类似这样的错:
Could not retrieve mirrorlist http://mirrorlist.centos.org/...
或者:
Could not resolve host: mirrorlist.centos.org
或者下载速度特别慢,几 KB/s。
原因
默认 yum 源是 CentOS 官方的,服务器在国外,国内访问慢。有时候官方源还会挂。
更换国内源
第一步:备份原来的源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
第二步:下载阿里源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者用 wget:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
第三步:清理缓存并重建
yum clean all
yum makecache
第四步:测试
yum install -y wget
应该秒装完成。
其他国内源
清华源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.tuna.tsinghua.edu.cn/repo/Centos-7.repo
网易源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
中科大源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.ustc.edu.cn/repo/Centos-7.repo
安装 EPEL 源
EPEL 源是 Extra Packages for Enterprise Linux,很多常用软件(比如 nginx)都在 EPEL 里。
yum install epel-release -y
装完之后也可以换成阿里的 EPEL 源:
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
常见坑
坑1:换完源还是慢
换了阿里源还是慢。
原因: DNS 解析慢,或者服务器本身带宽小。
解决: 换个源试试(清华、网易),或者检查 DNS:
cat /etc/resolv.conf
坑2:yum makecache 报错
执行 yum makecache 的时候报错。
原因: 源文件没下好,或者网络不通。
解决: 检查源文件内容对不对:
cat /etc/yum.repos.d/CentOS-Base.repo
或者重新下一遍。
坑3:CentOS7 已经 EOL 了
CentOS7 官方已经停服了(2024年6月30日),官方源已经不能用了。
解决: 用 vault 源(存档源):
阿里 vault 源:
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-7.repo
坑4:404 Not Found
装软件的时候报 404。
原因: 源文件里的路径不对,或者软件包被删了。
解决: 换个源,或者清理缓存:
yum clean all
yum makecache
总结
换 yum 源就三步:
- 备份:
mv /etc/yum.repos.d/CentOS-Base.repo 备份 - 下载新源:curl 下载阿里/清华源
- 清缓存:
yum clean all && yum makecache
国内服务器一定要换国内源,不然装软件能急死。
遇到问题加QQ23979811 协助处理
Linux软件包管理,yum常用命令汇总
前言
CentOS 装软件怎么装?装完怎么卸?找不到某个软件包名怎么办?这些都需要用到 yum 命令。yum 是 CentOS/RHEL 系统的软件包管理器,自动解决依赖关系,比 rpm 好用多了。本文就把 yum 常用命令汇总一下,装软件、卸软件、查软件都能用。
安装软件
安装软件包
yum install nginx -y
-y 表示自动确认,不用手动输 y。
安装多个软件包
yum install nginx mysql php -y
重新安装
yum reinstall nginx -y
软件装坏了想重装,用这个。
卸载软件
卸载软件包
yum remove nginx -y
卸载并删除依赖
yum autoremove nginx -y
把安装 nginx 时自动装上的依赖也一起删掉。
更新软件
更新所有软件
yum update -y
注意: 这个会把所有软件都更新一遍,包括内核。生产环境慎用,可能会把系统搞挂。
更新某个软件
yum update nginx -y
只更新 nginx。
检查哪些软件可以更新
yum check-update
查找软件
搜索软件包
yum search nginx
模糊搜索,输出所有名字或描述里包含 nginx 的包。
查找文件属于哪个包
yum provides /usr/sbin/nginx
你知道某个文件路径,但不知道是哪个包装的,用这个查。
查看软件包信息
yum info nginx
输出软件包的详细信息:版本、大小、描述等。
查看已安装软件
列出所有已安装的包
yum list installed
太多了可以配合 grep:
yum list installed | grep nginx
查看某个软件装没装
yum list installed nginx
仓库管理
查看已启用的仓库
yum repolist
查看所有仓库(包括禁用的)
yum repolist all
清理缓存
yum clean all
yum 下载的包会缓存下来,占磁盘空间。定期清理一下。
重建缓存
yum makecache
常用场景
场景1:装 Nginx
yum install nginx -y
systemctl start nginx
systemctl enable nginx
场景2:不知道软件包名
想装个下载工具,但不知道叫什么。
yum search wget
或者:
yum search curl
场景3:某个命令找不到
输入 ifconfig 提示 command not found,不知道是哪个包装的。
yum provides ifconfig
会告诉你是 net-tools 包提供的,装一下:
yum install net-tools -y
场景4:软件版本太旧
CentOS7 自带的软件版本都比较老,比如 Nginx 是 1.20。想用新版本,需要加第三方源。
装 EPEL 源:
yum install epel-release -y
装完 EPEL 源之后,就能装更多软件包了。
常见坑
坑1:yum install 不加 -y
不加 -y 的话,安装到一半会停下来问你 Is this ok [y/d/N],自动化脚本里很容易卡在这里。
解决: 命令后面加 -y:
yum install nginx -y
坑2:yum update 把系统搞挂了
生产环境跑了 yum update -y,结果内核更新了,重启之后服务起不来。
解决: 生产环境不要随便 yum update,要更新就单独更新某个软件:
yum update nginx -y
坑3:找不到软件包
用默认源搜不到某个软件,比如 Docker、Node.js 这些。
解决: 加第三方源,比如 EPEL:
yum install epel-release -y
坑4:yum 缓存满了
yum 缓存的包占了很多磁盘空间。
解决: 定期清理:
yum clean all
总结
yum 常用命令:
| 命令 | 作用 |
|---|---|
yum install 包名 -y |
安装软件 |
yum remove 包名 -y |
卸载软件 |
yum update 包名 -y |
更新软件 |
yum search 关键词 |
搜索软件 |
yum provides 文件路径 |
查文件属于哪个包 |
yum info 包名 |
查看软件包信息 |
yum list installed |
列出已安装的包 |
yum repolist |
查看仓库列表 |
yum clean all |
清理缓存 |
记住这几个,CentOS 日常装软件就够用了。
遇到问题加QQ23979811 协助处理