在 CentOS 系统管理中,YUM(Yellowdog Updater Modified)是一个不可或缺的命令行工具,它极大地简化了软件包的安装、更新和卸载过程,作为基于 RPM 的包管理器,YUM 的核心优势在于其强大的依赖关系解析能力,能够自动处理软件包之间的复杂依赖,确保系统环境的稳定与一致性,掌握 YUM 的使用,是每一位 CentOS 用户和管理员的必备技能。
YUM 基础:日常必备命令
对于日常操作,YUM 提供了一系列直观且高效的命令,以下是最常用的几个命令,涵盖了软件包管理的全生命周期。
安装软件包
当需要安装新的软件时,yum install
是首选命令,只需提供软件包的名称,YUM 就会自动从配置好的软件仓库中下载该包及其所有依赖项并进行安装。
安装 Apache Web 服务器(httpd):
sudo yum install httpd
在执行前,YUM 会列出所有将要安装的软件包,并提示用户确认(输入 y
并回车)。
卸载软件包
要移除不再需要的软件包,可以使用 yum remove
或 yum erase
命令,这两个命令功能相同,都会卸载指定的软件包,同时也会检查是否有其他包依赖于它,并给出警告。
卸载 httpd:
sudo yum remove httpd
更新软件包
保持系统软件的最新状态对于安全性和功能性至关重要。
- 更新单个软件包:
yum update <package_name>
- 更新系统中所有已安装的软件包:
yum update
执行 yum update
会将系统上所有可以升级的包都升级到最新版本,还有一个类似的命令 yum upgrade
,它除了升级包之外,还会移除那些已经成为过时(obsoleted)的旧版本包,行为更为激进。
搜索与查询软件包
在不确定软件包的确切名称时,可以使用 yum search
命令进行模糊搜索,它会搜索软件包的名称和摘要信息。
搜索与 “wget” 相关的包:
yum search wget
如果需要查看某个软件包的详细信息,如版本、大小、来源仓库、描述等,可以使用 yum info
命令:
yum info httpd
要列出系统中所有已安装的、可用的或可更新的软件包,可以使用 yum list
命令及其变体:
yum list installed
:列出所有已安装的包。yum list available
:列出所有仓库中可用的包。yum list updates
:列出所有可以更新的包。
为了方便查阅,以下表格小编总结了这些核心命令:
命令 | 功能描述 | 示例 |
---|---|---|
yum install <包名> | 安装指定的软件包及其依赖 | sudo yum install vim |
yum remove <包名> | 卸载指定的软件包 | sudo yum remove vim |
yum update | 更新所有可更新的软件包 | sudo yum update |
yum update <包名> | 更新指定的软件包 | sudo yum update vim |
yum search <关键词> | 根据关键词搜索软件包 | yum search editor |
yum info <包名> | 显示软件包的详细信息 | yum info vim |
yum list installed | 列出所有已安装的软件包 | yum list installed | grep python |
进阶用法:管理仓库与软件包组
除了基础的包管理,YUM 还能管理软件仓库和软件包组,这在系统部署和环境配置中非常有用。
管理软件仓库
YUM 从一个或多个配置好的仓库获取软件包,仓库配置文件位于 /etc/yum.repos.d/
目录下。
- 列出所有启用的仓库:
yum repolist
- 列出所有仓库(包括禁用的):
yum repolist all
有时需要临时启用或禁用某个仓库,例如安装第三方软件时,这需要 yum-utils
包提供的 yum-config-manager
工具。
# 安装 yum-utils sudo yum install yum-utils # 禁用某个仓库 sudo yum-config-manager --disable <repo_id> # 启用某个仓库 sudo yum-config-manager --enable <repo_id>
管理软件包组
YUM 允许将相关的软件包集合作为一个“组”来管理,开发工具”或“Web 服务器”。
- 列出所有可用的软件包组:
yum grouplist
- 查看某个组包含哪些软件包:
yum groupinfo "<组名>"
- 安装整个软件包组:
yum groupinstall "<组名>"
- 卸载整个软件包组:
yum groupremove "<组名>"
安装“Development Tools”组,可以一次性获得编译软件所需的 GCC、make 等工具:
sudo yum groupinstall "Development Tools"
YUM 历史与缓存管理
YUM 提供了强大的历史记录功能,允许查看、撤销或重做过去的操作,它也会在本地缓存下载的软件包和元数据,合理管理缓存有助于节省磁盘空间。
查看和操作历史
使用 yum history
命令可以查看所有 YUM 事务的列表,每个事务都有一个唯一的 ID。
yum history list
:显示历史事务列表。yum history info <ID>
:显示指定 ID 事务的详细信息。yum history undo <ID>
:撤销指定 ID 的事务(如果 ID 3 是安装,undo 就是卸载)。yum history redo <ID>
:重做指定 ID 的事务。
这个功能在误操作或系统更新后出现问题时尤其有用。
清理缓存
YUM 缓存默认存放在 /var/cache/yum/
目录下,随着时间推移,缓存会占用大量空间。
yum clean all
:清理所有缓存,包括软件包、头文件和元数据。yum clean packages
:只清理已下载的软件包缓存。yum clean headers
:只清理头文件。yum clean metadata
:只清理元数据。
定期执行 yum clean all
是一个良好的维护习惯。
相关问答FAQs
问题 1:执行 yum install
时提示 “No package available” 怎么办?
解答: 这个错误提示意味着 YUM 在所有已启用的软件仓库中都找不到你指定的软件包,解决方法通常有以下几步:
- 检查包名是否正确:软件包名可能存在拼写错误,使用
yum search <关键词>
来确认正确的包名。 - 检查仓库配置:确保你的系统正确配置了软件仓库,可以运行
yum repolist
查看启用了哪些仓库,如果列表为空或很少,可能需要检查/etc/yum.repos.d/
目录下的.repo
文件是否配置正确。 - 启用 EPEL 仓库:很多常见的第三方软件包不在 CentOS 的官方基础仓库中,而是在 EPEL (Extra Packages for Enterprise Linux) 仓库中,可以安装 EPEL 仓库:
sudo yum install epel-release
,然后再次尝试安装。
问题 2:yum update
和 yum upgrade
有什么根本区别?
解答: 两者都用于更新系统软件包,但有一个关键区别:
yum update
:它会将系统上所有已安装的软件包更新到仓库中的最新版本,但不会移除任何软件包,如果某个包的新版本取代了另一个旧包,update
只会安装新包,但会保留旧包。yum upgrade
:它在执行更新的同时,还会进行“清理”工作,它会识别并移除那些在新版本中已被废弃或取代的旧软件包。upgrade
的行为更彻底,能保持系统更“干净”,但也可能移除你仍在使用的(尽管不推荐)旧包。
对于大多数日常维护场景,yum update
是更安全、更保守的选择,只有在进行系统大版本升级或希望彻底清理旧包时,才考虑使用 yum upgrade
。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复