Linux 的 yum 命令详解(新手详细版)
本文档面向零基础新手,从“yum 是什么、用在什么系统上”讲起,详细说明安装、卸载、更新、搜索、查看、仓库配置、常见问题等,并配有大量示例。
一、yum 是什么?用在哪儿?
1.1 一句话理解
yum(Yellowdog Updater, Modified)是 Linux 上的一种软件包管理器,用来从网络上的软件仓库里下载并安装、卸载、更新软件,并自动处理依赖关系(某个软件需要别的包才能运行,yum 会一起装)。
- 你不用自己找安装包、不用自己解决“缺哪个库”。
- 一条命令如
yum install 软件名,就能把软件和依赖一起装好。
1.2 哪些系统用 yum?
yum 用在 RPM 系的发行版上,常见的有:
| 系统 | 说明 |
|---|---|
| CentOS | 企业常用,用 yum |
| RHEL(Red Hat Enterprise Linux) | 红帽企业版,用 yum(或订阅版用 rhn) |
| Fedora | 新版本已用 dnf(可视为 yum 的升级版,命令很像) |
| Rocky Linux / AlmaLinux | CentOS 替代品,用 yum |
注意:
- Debian / Ubuntu 用的是 apt,不是 yum。
- 若你用的是 Fedora 新版本,可能只有 dnf,没有 yum;很多地方
dnf和yum用法几乎一样,可把下文中的yum换成dnf试一下。
1.3 需要什么权限?
安装、卸载、更新软件会改动系统,所以要用 root 权限,一般写成:
sudo yum 子命令 参数
没有 sudo 时,只能做“查”类操作(如 search、list、info),不能 install/remove。
二、相关概念(便于理解命令)
2.1 软件包(Package)
- 一个“软件”在仓库里是以包的形式存在的,每个包有一个名字,如
vim、nginx。 - 包通常是 RPM 格式(.rpm 文件),里面包含程序文件、配置、依赖信息等。
2.2 仓库(Repository / Repo)
- 仓库就是服务器上的一堆软件包 + 元数据(包列表、依赖关系等)。
- 系统通过配置文件知道去哪里找仓库(URL、是否启用等)。
- 常见配置目录:/etc/yum.repos.d/,里面每个
.repo文件可以定义一个或多个仓库。
2.3 依赖(Dependency)
- 软件 A 可能依赖软件 B、C(例如需要某个库),B、C 又可能依赖别的。
- yum 会自动计算需要装哪些包,并一起安装,你一般不用手动管。
三、安装软件:yum install
3.1 基本用法
sudo yum install 包名
- 会从已启用的仓库里找该包,并安装该包及其依赖。
- 过程中会列出要安装的包,并提示你确认(y/n),输入 y 回车继续。
3.2 示例
# 安装 vim
sudo yum install vim
# 安装 nginx
sudo yum install nginx
# 一次安装多个包
sudo yum install vim wget curl
3.3 常用选项
| 选项 | 含义 |
|---|---|
-y |
对所有询问自动回答 yes,不需手动敲 y(脚本里常用) |
-q |
安静模式,少输出 |
--nogpgcheck |
不校验 GPG(不推荐日常用,仅当仓库签名有问题时临时用) |
示例:
# 不提示,直接装(适合脚本)
sudo yum install -y nginx
# 安装时跳过 GPG 检查(慎用)
sudo yum install -y --nogpgcheck 某包名
3.4 安装“某个命令”所在的包:yum provides / whatprovides
不知道包名、只知道命令名时,可以先查“哪个包提供这个命令/文件”:
yum provides 命令或文件路径
# 或
yum whatprovides 命令或文件路径
示例:
# 哪个包提供 ifconfig 命令?
yum provides ifconfig
# 或
yum provides */ifconfig
# 通常会提示需要安装 net-tools
sudo yum install -y net-tools
四、卸载软件:yum remove
4.1 基本用法
sudo yum remove 包名
- 会卸载该包,并可能提示“依赖它的包也会被卸掉”,需确认。
- 只删软件包本身,不会自动删掉用户数据(如配置文件、/home 下的数据),除非包自带卸载脚本做了清理。
4.2 示例
# 卸载 vim
sudo yum remove vim
# 卸载多个
sudo yum remove 包1 包2
# 不询问直接卸(脚本用)
sudo yum remove -y 包名
五、更新:yum update 与 yum upgrade
5.1 更新所有包(系统整体升级)
sudo yum update
- 会检查所有已安装的包,有更新版本就列出来,问你装不装;输入 y 会下载并安装。
- 相当于“系统大升级”,可能耗时较长。
# 不询问,直接全部更新(脚本或维护窗口用)
sudo yum update -y
5.2 只更新某一个包
sudo yum update 包名
示例:
sudo yum update nginx
5.3 update 和 upgrade(dnf 里有区别,yum 里常混用)
- 在yum里,
update和upgrade通常效果类似,都是把包升级到仓库里的最新版。 - 在 dnf 里,
upgrade更偏向“只升级,不装新包”;update可能还会装新依赖。
新手记一句即可:日常用yum update做系统更新。
六、搜索与查看:search / list / info
6.1 按名字或描述搜索:yum search
yum search 关键词
- 在包名、描述里找包含该关键词的包,不需要 root。
- 输出里会列出包名和简短描述。
示例:
yum search vim
yum search web server
yum search nginx
6.2 列出包:yum list
# 列出仓库里所有(或匹配的)包,很多
yum list
# 只列名字里包含某关键词的
yum list 关键词
常用:
# 只看已安装的
yum list installed
# 只看可安装的(仓库里有、但本机未装)
yum list available
# 看有没有叫 nginx 的包(已装 + 可装)
yum list nginx
yum list "*nginx*"
示例输出(格式因版本略异):
nginx.x86_64 1.20.1-2.el7 base
# 包名.架构 版本-发布 仓库名
6.3 查看包详情:yum info
yum info 包名
- 显示该包的描述、版本、大小、来源仓库等,不需要 root。
示例:
yum info nginx
yum info vim
6.4 查看已安装的包是否可更新:yum check-update
yum check-update
- 列出当前已安装且有可用更新的包,不执行安装。
- 退出码:0 表示没有可更新,100 表示有可更新(脚本里可据此判断)。
七、仓库相关:repolist / clean / makecache
7.1 查看当前启用的仓库:yum repolist
# 列出启用的仓库
yum repolist
# 列出所有(含禁用的)
yum repolist all
输出中会看到仓库 ID、名称、包数量等。
7.2 清理缓存:yum clean
yum 会把仓库元数据等缓存在本机,有时需要清理后重拉:
# 清理所有缓存(元数据、包缓存等)
sudo yum clean all
# 只清理元数据(常用,解决“列表不是最新”的问题)
sudo yum clean metadata
7.3 重建元数据缓存:yum makecache
sudo yum makecache
- 从仓库重新下载元数据并建本地缓存,便于后续 search、list、install 更快、更准。
- 改过仓库配置或换源后,建议执行一次:
sudo yum clean all
sudo yum makecache
八、按组安装:yum groupinstall(可选)
有些发行版把一批相关包打成“组”(group),如“开发工具”、“图形界面”等,可以整组安装:
# 列出所有组
yum group list
# 安装某个组(组名可能带空格,用引号)
sudo yum groupinstall -y "Development Tools"
sudo yum groupinstall -y "GNOME Desktop"
- 组名因发行版和仓库而异,以
yum group list输出为准。 - 若系统是 dnf,命令多为
dnf group install "组名"。
九、历史与回滚:yum history(可选)
yum 会记录每次安装、卸载、更新操作,可以查历史并回滚:
# 查看历史
yum history list
# 查看某次操作的详情(ID 从 list 里看)
yum history info 编号
# 撤销某次操作(慎用,先理解再试)
sudo yum history undo 编号
# 重做某次操作
sudo yum history redo 编号
新手了解即可,真要做“回滚”建议在虚拟机或测试环境先试。
十、本地 RPM 包:yum localinstall(可选)
若你手头有一个从别处下载的 .rpm 文件,可以用 yum 来装,让它顺带解决依赖(仓库里有依赖的话):
sudo yum localinstall /path/to/xxx.rpm
- 若依赖在仓库里没有,yum 会报错,需要自己找依赖包或换源。
- 也可用
rpm -ivh xxx.rpm只装该包不解决依赖(不推荐新手首选)。
十一、配置文件在哪里?
11.1 主配置:/etc/yum.conf
- 全局选项:如是否保留缓存、日志、是否用 gpgcheck 等。
- 新手一般不用改,需要改“源”时主要动的是下面的 repo 文件。
11.2 仓库配置:/etc/yum.repos.d/
- 该目录下每个 .repo 文件可定义多个仓库。
- 典型一段(仅作理解用,不要照抄,以你系统为准):
[base]
name=CentOS-$releasever - Base
baseurl=http://mirror.xxx.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
- enabled=1 表示启用,enabled=0 表示禁用。
- 换国内源时,通常是备份原有 repo 文件后,下载发行版对应版本的“镜像站 .repo”放到这里,再
yum clean all && yum makecache。
11.3 临时禁用某仓库
安装时不想用某个仓库,可以临时关掉:
sudo yum install --disablerepo=某仓库ID 包名
启用/禁用仓库也可通过改 */etc/yum.repos.d/.repo 里的 enabled** 实现。
十二、常见用法一条龙示例
下面用一条龙把最常用的流程串起来(在支持 yum 的系统中,如 CentOS 7):
# 1. 查看已启用的仓库
yum repolist
# 2. 搜索包
yum search nginx
# 3. 看包信息
yum info nginx
# 4. 安装(带确认)
sudo yum install nginx
# 5. 若不知道包名,只知道命令名
yum provides ifconfig
sudo yum install -y net-tools
# 6. 查看是否可更新
yum check-update
# 7. 只更新 nginx
sudo yum update nginx
# 8. 全系统更新(会提示确认)
sudo yum update -y
# 9. 卸载(会提示依赖影响)
sudo yum remove nginx
# 10. 换源或改配置后,刷新缓存
sudo yum clean all
sudo yum makecache
十三、和 apt 的简单对比(你若是从 Ubuntu 转过来)
| 操作 | yum(CentOS/RHEL 等) | apt(Debian/Ubuntu) |
|---|---|---|
| 安装 | sudo yum install 包名 |
sudo apt install 包名 |
| 卸载 | sudo yum remove 包名 |
sudo apt remove 包名 |
| 更新软件列表 | sudo yum makecache |
sudo apt update |
| 升级所有包 | sudo yum update -y |
sudo apt upgrade -y |
| 搜索 | yum search 关键词 |
apt search 关键词 |
| 看包信息 | yum info 包名 |
apt show 包名 |
| 仓库配置目录 | /etc/yum.repos.d/ | /etc/apt/sources.list 或 sources.list.d/ |
十四、常见问题与注意点
14.1 提示 “No package xxx available”
- 可能包名不对:用
yum search xxx看实际包名。 - 可能当前启用的仓库里没有:检查
yum repolist,或换源、加源。
14.2 提示 “Cannot retrieve metalink” 或仓库连不上
- 网络或镜像站问题;可换国内镜像(如阿里云、清华的 CentOS 源)。
- 换源后执行:
sudo yum clean all,再sudo yum makecache。
14.3 安装时依赖冲突
- 看报错里冲突的包,有时需要先卸掉冲突的旧包,或换版本;少数情况需要加/换仓库。
14.4 系统是 dnf 没有 yum
- Fedora 新版本、部分 CentOS 8 等只有 dnf:把命令里的
yum换成dnf即可,如sudo dnf install vim。用法与 yum 高度一致。
14.5 不要随意加来路不明的仓库
- 只加可信源(官方、知名镜像),避免引入恶意或损坏的包。
十五、命令速查表
| 需求 | 命令示例 |
|---|---|
| 安装 | sudo yum install 包名、sudo yum install -y 包名 |
| 卸载 | sudo yum remove 包名 |
| 更新所有包 | sudo yum update、sudo yum update -y |
| 只更新某包 | sudo yum update 包名 |
| 搜索 | yum search 关键词 |
| 看包列表 | yum list、yum list installed、yum list available、yum list 包名 |
| 看包详情 | yum info 包名 |
| 谁提供某命令/文件 | yum provides 命令或路径、yum whatprovides */ifconfig |
| 有可更新吗 | yum check-update |
| 仓库列表 | yum repolist、yum repolist all |
| 清缓存 | sudo yum clean all、sudo yum clean metadata |
| 建缓存 | sudo yum makecache |
| 按组安装 | sudo yum groupinstall -y "组名"、yum group list |
| 历史 | yum history list、sudo yum history undo 编号 |
| 本地 rpm | sudo yum localinstall /path/to/xxx.rpm |
十六、小结
- yum 是 RPM 系(CentOS、RHEL 等)的包管理器,用于安装、卸载、更新软件并自动处理依赖。
- 常用命令:install、remove、update、search、list、info、provides;仓库相关 repolist、clean、makecache。
- 需要改源时,编辑 */etc/yum.repos.d/.repo,改完后 yum clean all 再 yum makecache**。
- 若系统是 dnf,把
yum换成dnf即可,用法基本一致。
建议在虚拟机或测试机上多敲几条 install、search、list、info,再结合 Linux简介.md 里“软件安装”一节,就能把 yum 用熟。
文档以 CentOS 7 / RHEL 7 等使用 yum 的系统为准;CentOS 8+、Fedora 等可能已默认 dnf,命令可对应替换。