linux的yum命令

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;很多地方 dnfyum 用法几乎一样,可把下文中的 yum 换成 dnf 试一下。

1.3 需要什么权限?

安装、卸载、更新软件会改动系统,所以要用 root 权限,一般写成:

sudo yum 子命令 参数

没有 sudo 时,只能做“查”类操作(如 search、list、info),不能 install/remove。


二、相关概念(便于理解命令)

2.1 软件包(Package)

  • 一个“软件”在仓库里是以的形式存在的,每个包有一个名字,如 vimnginx
  • 包通常是 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里,updateupgrade 通常效果类似,都是把包升级到仓库里的最新版。
  • 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 updatesudo yum update -y
只更新某包 sudo yum update 包名
搜索 yum search 关键词
看包列表 yum listyum list installedyum list availableyum list 包名
看包详情 yum info 包名
谁提供某命令/文件 yum provides 命令或路径yum whatprovides */ifconfig
有可更新吗 yum check-update
仓库列表 yum repolistyum repolist all
清缓存 sudo yum clean allsudo yum clean metadata
建缓存 sudo yum makecache
按组安装 sudo yum groupinstall -y "组名"yum group list
历史 yum history listsudo yum history undo 编号
本地 rpm sudo yum localinstall /path/to/xxx.rpm

十六、小结

  • yum 是 RPM 系(CentOS、RHEL 等)的包管理器,用于安装、卸载、更新软件并自动处理依赖。
  • 常用命令:installremoveupdatesearchlistinfoprovides;仓库相关 repolistcleanmakecache
  • 需要改源时,编辑 */etc/yum.repos.d/.repo,改完后 yum clean allyum makecache**。
  • 若系统是 dnf,把 yum 换成 dnf 即可,用法基本一致。

建议在虚拟机或测试机上多敲几条 install、search、list、info,再结合 Linux简介.md 里“软件安装”一节,就能把 yum 用熟。


文档以 CentOS 7 / RHEL 7 等使用 yum 的系统为准;CentOS 8+、Fedora 等可能已默认 dnf,命令可对应替换。

发表评论