1.命令作用
YUM(Yellowdog Updater Modified.)是一个在Fedora 和RedHat 以及SUSE 中的Shell 前端软件包管理器;基于RPM包管理,能够从指定的服务器自动下载RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum源配置: Linux(Centos 7.6)yum源配置
2.命令语法
Usage: yum [OPTION] [COMMAND] [package ...]
3.参数详解
COMMAND:
- check,检查rpmdb中的问题,检查RPM数据库(rpmdb)的完整性和一致性
- check-update,检查可用的软件包更新,即列出所有可更新的软件包
- clean,删除缓存数据,clead选项如下:
- headers,清除下载的软件包头文件(元数据)
- packages,删除已下载的软件包文件(.rpm)
- metadata,清理仓库元数据缓存
- dbcache,清除YUM内部数据库缓存
- plugins,清理插件生成的缓存数据
- expire-cache,使过期的元数据缓存失效
- rpmdb,重建RPM数据库索引
- all,headers + packages + metadata + dbcache + plugins
- deplist,列出包的依赖项
- distribution-synchronization,将已安装的软件包更新到最新的可用版本
- downgrade,降级软件包
- erase,从系统中删除一个或多个包
- fs,作用于主机的文件系统数据,主要用于删除最小主机的文档(docs)/语言包(languages),测试无效果
- fssnapshot,创建文件系统快照,或列出/删除当前快照;依赖LVM分区
- groups,显示或使用组信息,yum grouplist(显示组列表)、yum groupinstall(安装组)、yum groupremove(移除组)、yum groupinfo(显示组内包列表)
- help,显示有用的使用信息
- history,用于查看和管理事务历史记录的核心命令,支持回滚、重做、撤销等操作
- info,显示一个包或一组包的详细信息,包括安装过的多个版本信息
- install,在系统上安装一个或多个包
- langavailable,检查可用语言包列表
- langinfo,列出语言包或指定语言包信息
- langinstall,为语言安装适当的语言包
- langlist,已安装语言列表
- langremove,删除已安装的语言包
- list,列出yum源中的一个或一组包
- load-transaction,从指定文件名加载已保存的事务
- makecache,生成元数据缓存
- provides,查找提供特定文件或命令的所属软件包
- reinstall,重新安装软件包
- remove,移除已经安装的指定软件包
- repo-pkgs,将软件库(repo)视为一组软件包, 所有我们可用安装/移除他们所有;命令格式:yum repo-pkgs <repoid> <list|info|install|remove|upgrade|reinstall*|remove-or-*> [pkg(s)]
- repolist,显示已配置的软件库
- search,搜索给定字符串的包详细信息
- shell,运行yum shell进入交互式管理软件包
- swap,简单的方法来交换包,而不是使用shell;yum swap [remove|cmd] <pkg|arg(s)> [-- install|cmd] <pkg|arg(s)>
- update,更新系统上的一个或多个软件包
- update-minimal,工作方式类似于升级,但会到“最新”的软件包匹配,从而修复影响系统的问题
- updateinfo,处理存储库更新信息
- upgrade,更新软件包,但保持原内核版本
- version,显示机器和/或可用版本的版本
OPTION:
- -h, --help,显示此帮助消息并退出
- -t, --tolerant,容忍错误,忽略致命性错误
- -C, --cacheonly,强制使用本地/var/cache/yum目录下的缓存的元数据和软件包信息,不检查远程仓库更新
- -c [config file], --config=[config file],自定义配置文件位置,默认/etc/yum.conf
- -R [minutes], --randomwait=[minutes],最大命令等待时间,在发起网络请求前添加指定时间内的随机等待时间
- -d [debug level], --debuglevel=[debug level],debug输出等级
- 0-1,简单日志
- 2,默认级别,基础操作日志
- 3-4,显示详细步骤和依赖解析
- 5-10,输出完整调试信息(包括内部通信细节)
- --showduplicates,在repos、list/search命令中重复显示
- -e [error level], --errorlevel=[error level],error输出等级
- --rpmverbosity=[debug level name],指定debug输出等级名称,如emergency、error、warn、info、debug(测试无效果)
- -q, --quiet,安静运行,-d 0-1日志级别
- -v, --verbose,详细的操作,5-10日志级别
- -y, --assumeyes,对所有问题都回答"是",可用避免交互输入y确认执行
- --assumeno,对所有问题都回答"不"
- --version,显示Yum版本并退出
- --installroot=[path],设置安装根
- --enablerepo=[repo],启用一个或多个存储库(允许使用通配符)
- --disablerepo=[repo],禁用一个或多个存储库(允许使用通配符)
- -x [package], --exclude=[package],通过名称或glob排除包
- --disableexcludes=[repoid/all/main],为一个库或所有库,禁用不包括/etc/yum.conf中[main]的参数;repoid(base/updates);all禁用所有仓库的排除规则;main仅禁用/etc/yum.conf中[main]的全局排除规则
- --disableincludes=[repoid/all/main],为一个库或所有库,禁用包括/etc/yum.conf中[main]的参数;repoid(base/updates);all禁用所有仓库的排除规则;main仅禁用/etc/yum.conf中[main]的全局排除规则
- --obsoletes,在更新期间启用废弃处理;在更新或升级操作时,自动移除被新版本标记为废弃(obsolete)的旧软件包,并安装其替代包
- --noplugins,禁用Yum插件
- --nogpgcheck,关闭GPG签名检查
- --disableplugin=[plugin],按名称禁用插件
- --enableplugin=[plugin],按名称启用插件
- --skip-broken,跳过具有深度问题的包(默认install/update遇到依赖冲突会终止操作,--skip-broken会允许部分完成操作,适合紧急修复场景)
- --color=COLOR,控制是否使用颜色,always(强制启用彩色输出),never(完全禁用色彩显示),auto(默认,根据终端类型自动判断)
- --releasever=RELEASEVER,在yum配置和repo文件中设置版本$releasever的值
- --downloadonly,不要更新,只需下载
- --downloaddir=DLDIR,指定用于存储包的备用目录
- --setopt=SETOPTS,临时修改/etc/yum.conf或仓库文件中的选项,优先级高于配置文件
- --bugfix,在更新中包括bug修复相关的包
- --security,在更新中包含与安全相关的包,与--bugfix用法类似
- --advisory=ADVS, --advisories=ADVS,在更新中包含修复给定建议所需的包,yum update --advisory=RHSA-2025:1234,其中RHSA-2025:1234是红帽安全公告编号
- --bzs=BZS,在更新中包含修复给定BZ所需的包
- --cves=CVES,在更新中包含修复给定CVE所需的包
- --sec-severity=SEVS, --secseverity=SEVS,在更新中包含与严重性匹配的安全相关包
4.常用用例
4.1.COMMAND参数用例
4.1.1.查看系统可更新的软件包
[root@node2 ~]# yum check-update # 查看所有可更新的rpm软件包
[root@node2 ~]# yum check-update less # 查看指定rpm软件包是否可更新
[root@node2 ~]# yum search less # 查看yum源中是否有less软件包
[root@node2 ~]# rpm -qa # 查看当前系统所有软件包已经安装的版本信息
[root@node2 ~]# rpm -qa less # 查看当前系统指定软件包已经安装的版本信息
# yum check-update less 结果如下,结果可以看到yum源中less软件包的版本信息
# 软件包名称及系统架构 可更新的新版本号 提供更新的软件仓库名称
less.x86_64 458-10.el7_9 updates
# rpm -qa less 结果如下,结果为当前系统less安装的版本
less-458-9.el7.x86_64
# 对比可更新的版本号(yum check-update less)和现在系统软件版本号(rpm -qa less)的区别
4.1.2.清空/生成yum元数据缓存
[root@node2 ~]# yum clean all # 清空yum所有元数据缓存
Loaded plugins: fastestmirror, langpacks
Cleaning repos: base extras updates
Cleaning up list of fastest mirrors
Other repos take up 112 M of disk space (use --verbose for details)
[root@node2 ~]#
[root@node2 ~]# yum makecache # 生成yum元数据缓存
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/10): base/7/x86_64/group_gz | 153 kB 00:00:00
... ...
(10/10): updates/7/x86_64/primary_db | 27 MB 00:00:15
Metadata Cache Created
[root@node2 ~]#
4.1.3.查看软件包的依赖关系
[root@node2 ~]# yum deplist less
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
package: less.x86_64 458-10.el7_9 # 当前分析的软件包名称
dependency: /bin/sh # 显示运行时的依赖,可分为文件依赖和库依赖,/bin/sh是文件依赖
provider: bash.x86_64 4.2.46-35.el7_9 # 指出上面的文件依赖/库依赖由哪个包提供
dependency: groff-base
provider: groff-base.x86_64 1.22.2-8.el7
dependency: libc.so.6(GLIBC_2.14)(64bit) # 上面/bin/sh是文件依赖,这里libc.so.6 这是库依赖
... ...
[root@node2 ~]#
4.1.4.安装/移除软件包
[root@node2 ~]# yum install httpd # 执行后根据提示输入y进行安装软件包
[root@node2 ~]# yum reinstall httpd # 执行后输入y进行软件重新安装(必须安装过才会有重新安装,如果没安装过,执行实际并不会安装软件)
[root@node2 ~]# yum erase httpd # 执行后根据提示输入y移除软件包
[root@node2 ~]# yum remove httpd # 执行后根据提示输入y移除软件包
[root@node2 ~]# rpm -qa httpd # 安装后可以该语句查看
4.1.5.更新可用的新版本软件包
[root@node2 ~]# rpm -qa less # 查看当前安装的版本
less-458-9.el7.x86_64
[root@node2 ~]# yum check-update less # 查看yum中是否有可更新的版本
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
less.x86_64 458-10.el7_9 updates
[root@node2 ~]# yum distribution-synchronization less # 更新可用的新版本软件包
... ...
Is this ok [y/d/N]: y
... ...
Complete!
[root@node2 ~]# rpm -qa less # 更新升级后的软件版本
less-458-10.el7_9.x86_64
[root@node2 ~]#
[root@node2 ~]# yum update less # 或者使用update更新软件包,可能升级到新内核
[root@node2 ~]# yum upgrade less # 或者使用upgrade更新软件包,保持原内核版本
4.1.6. 降级安装软件包
[root@node2 ~]# yum downgrade less
... ...
Is this ok [y/d/N]: y # 如果添加-y参数则不需要交互输入y
... ...
Removed:
less.x86_64 0:458-10.el7_9 # 根据提示会移除新版本
Installed:
less.x86_64 0:458-9.el7 # 安装旧版本
Complete!
[root@node2 ~]#
4.1.7.查看管理历史记录
# yum history后可使用: list, info, summary, repeat, redo, undo, new, rollback, addon, addon-info, stats, statistics, sync, synchronizepkg, pkgs, pkg-list, pkgs-list, package, package-list, packages, packages-list, pkg-info, pkgs-info, package-info, packages-info.
# yum操作记录在/var/log/yum.log文件中
[root@node2 ~]# yum history # 查看最进20条事务记录
[root@node2 ~]# yum history list # 查看最进20条事务记录
[root@node2 ~]# yum history list all # 查看全部历史事务记录
[root@node2 ~]# yum history info # 查看最后一个事务ID的详细信息
[root@node2 ~]# yum history info 21 # 查看指定事务ID的详细信息
[root@node2 ~]# yum history package-info httpd # 查看指定软件包的历史操作记录
[root@node2 ~]# yum history undo 21 # 撤销指定事务(恢复到操作前的状态)
[root@node2 ~]# yum history redo 21 # 重新执行指定事务
[root@node2 ~]# yum history rollback 21 # 回滚到指定事务之前的状态
[root@node2 ~]# yum history new # 清空历史记录并新建数据库(不影响已安装软件包)
[root@node2 ~]# yum history stats # 显示操作统计信息(如安装/更新次数)
# 软件包操作意外失败的内容会记录到以下文件
[root@node2 ~]# ll /tmp/yum_save_tx.2025-06-12.15-16.zfNFpK.yumtx
-rw------- 1 root root 553 Jun 12 15:16 /tmp/yum_save_tx.2025-06-12.15-16.zfNFpK.yumtx
[root@node2 ~]#
# 可通过yum load-transaction /tmp/yum_save*.zfNFpK.yumtx将文件记录加载到事务内,进行事务操作
[root@node2 ~]# yum load-transaction /tmp/yum_save*.zfNFpK.yumtx
4.1.8.语言包的安装查看
[root@node2 ~]# yum langavailable # 查看语言包可用列表
[root@node2 ~]# yum langinfo Zulu # 查看指定语言包信息
[root@node2 ~]# yum langinstall Zulu # 安装指定语言包
[root@node2 ~]# yum langlist Zulu # 查看已安装的语言包列表
[root@node2 ~]# yum langremove Zulu # 移除指定语言包
4.1.9.查看文件/命令的所属包
[root@node2 ~]# yum provides "*/ifconfig" # 查找包含该文件/命令的所属软件包
[root@node2 ~]# yum provides lspci # 查找命令所属包
[root@node2 ~]# yum provides /usr/bin/shasum # 查找文件所属包
4.1.10.安装整库或指定库中的指定软件包
# 语法: yum repo-pkgs <repoid> <list|info|install|remove|upgrade|reinstall*|remove-or-*> [pkg(s)]
[root@node2 ~]# yum repolist # 查看已配置的软件库
[root@node2 ~]# yum repo-pkgs updates # 安装配置updates软件库下的所有软件包
[root@node2 ~]# yum repo-pkgs base install httpd # 安装配置base软件库下的httpd软件包
4.1.11.交互式软件包管理
[root@node2 ~]# yum shell # 进入交互式包管理界面
Loaded plugins: fastestmirror, langpacks
> update less
> install httpd
> run # 提交执行以上的命令
4.1.12.替换软件包
语法: yum swap [remove|cmd] <pkg|arg(s)> [-- install|cmd] <pkg|arg(s)>
[root@node2 ~]# yum swap httpd less # 卸载httpd并安装nginx
4.2.OPTION参数用例
4.2.1.指定本地/远程元数据缓存
[root@node2 ~]# yum -C list installed # 仅从本地缓存列出已安装的软件包
[root@node2 ~]# yum -C list installed # 从远程仓库和本地缓存列出已安装的软件包
[root@node2 ~]# yum -C install httpd # 没有yum makecache,指定-C安装没有本地元数据缓存,执行报错
[root@node2 ~]# yum install httpd # 没有yum makecache,本地没有元数据缓存,会读取远程的元数据,执行可成功
4.2.2.指定配置文件执行
[root@node2 ~]# yum -c /etc/yum.conf install httpd # 可自定义yum配置文件
4.2.3.指定随机等待时间
[root@node2 ~]# yum -R 5 install httpd
Loaded plugins: fastestmirror, langpacks # 输出该行后会等待一个指定时间内的随机时间后继续执行
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
... ...
[root@node2 ~]#
4.2.4.重复显示
yum search --showduplicates httpd
yum search httpd
4.2.5.自动输入y或n确认是否安装
[root@node2 ~]# yum --assumeyes install httpd # 等同yum -y install httpd,不再需要交互输入y确认执行
[root@node2 ~]# yum --assumeno install httpd # 执行在交互式的地方直接输入n退出,不会执行安装
4.2.6.启用/停用某一/多个库或者排除包执行命令
[root@node2 ~]# yum --enablerepo=updates install httpd # 执行成功
[root@node2 ~]# yum --disablerepo=updates install httpd # 执行失败,httpd在updates库里,禁用updates后,安装httpd就会报错
[root@node2 ~]# yum -x httpd install httpd # 排除httpd包安装httpd包就会报错
[root@node2 ~]# yum -x kernel* update # 更新时排除内核相关
4.2.7.禁用包括/不包括main的参数执行命令
yum --disableexcludes=updates install httpd # 禁用不包括/etc/yum.conf中[main]的参数
yum --disableincludes=updates install httpd # 禁用包括/etc/yum.conf中[main]的参数
4.2.8.启用废弃旧软件包处理
[root@node2 ~]# yum --obsoletes update
[root@node2 ~]# yum --obsoletes update httpd
4.2.9.禁用插件/关闭GPG签名检查
[root@node2 ~]# yum install httpd # 第一行会打印插件信息
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
... ...
[root@node2 ~]#
[root@node2 ~]# yum --noplugins install httpd # 禁用插件后不会再打印插件信息了
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-99.el7.centos.1 will be installed
--> Finished Dependency Resolution
... ...
[root@node2 ~]#
[root@node2 ~]# yum --nogpgcheck install httpd # 关闭GPG签名检查
... ...
[root@node2 ~]# yum --disableplugin=fastestmirror install httpd # 禁用fastestmirror插件
Loaded plugins: langpacks # 插件不显示fastestmirror
... ...
4.2.10.跳过依赖问题继续操作
[root@node2 ~]# yum remove httpd-tools --skip-broken
[root@node2 ~]# yum install glusterfs-client-xlators --skip-broken
[root@node2 ~]# yum update --skip-broken
4.2.11.指定系统版本安装
[root@node2 ~]# yum --releasever=7 install httpd
[root@node2 ~]# yum --releasever=8 install httpd
4.2.12.下载yum源中的rpm包
# --downloadonly 参数只下载不安装
# --downloaddir 指定下载目录
# 如果已经安装可使用:yum reinstall --downloadonly --downloaddir=/opt httpd
[root@node2 ~]# yum install --downloadonly --downloaddir=/opt httpd
... ...
[root@node2 ~]# ll /opt/httpd-2.4.6-99.el7.centos.1.x86_64.rpm
-rw-r--r-- 1 root root 2849200 May 30 2023 /opt/httpd-2.4.6-99.el7.centos.1.x86_64.rpm
[root@node2 ~]#
4.2.13.临时修改参数
# 临时修改/etc/yum.conf或仓库文件中的选项,优先级高于配置文件
[root@node2 ~]# yum --setopt=keepcache=1 install httpd
# 临时修改/etc/yum.conf指定库epel中的参数
yum --setopt=epel.gpgcheck=0 update
4.2.14. 安装时选择包含关键修复的版本安装
[root@node2 ~]# yum update --bugfix # 仅处理标记为修复特定错误的RPM包
[root@node2 ~]# yum update --bugfix httpd
[root@node2 ~]# yum install --bugfix httpd # 安装软件时优先选择包含关键修复的版本
1298

被折叠的 条评论
为什么被折叠?



