在CentOS系统中,定期为系统和软件打补丁是保障服务器安全、稳定运行的关键维护步骤,补丁通常用于修复安全漏洞、纠正软件错误或提升系统性能,本文将详细介绍在CentOS平台上进行补丁管理的标准流程和最佳实践。

打补丁前的准备工作
在执行任何更新操作之前,采取预防措施至关重要,以避免潜在的数据丢失或服务中断。
- 数据备份:这是最重要的一步,在更新前,请确保对关键数据、配置文件和数据库进行了完整备份,您可以使用
rsync、tar或专业的备份工具来完成此项工作。 - 检查当前系统版本:了解您正在运行的CentOS版本有助于判断可用的更新范围,可以使用以下命令查看:
cat /etc/centos-release
- 规划更新窗口:对于生产环境服务器,应选择业务低峰期进行更新,并在必要时通知用户可能的服务中断。
使用 DNF/YUM 进行更新
从CentOS 8开始,dnf(Dandified YUM)取代了yum成为默认的包管理器。dnf在很大程度上与yum保持兼容,因此在CentOS 7及更早版本上使用的yum命令通常也能在CentOS 8/Stream上运行(作为dnf的符号链接)。
核心的更新操作围绕dnf或yum命令展开,以下是一些最常用的命令组合:
| 操作 | 命令 | 说明 |
|---|---|---|
| 检查可用更新 | dnf check-update |
列出所有已安装但可以升级的软件包,执行此操作不会安装任何东西。 |
| 更新单个软件包 | dnf update <package_name> |
仅更新指定的软件包及其依赖项。 |
| 更新所有软件包 | dnf update 或 dnf upgrade |
这是最常用的“打补丁”命令,会更新系统中所有可用的软件包。upgrade在行为上更激进,会删除过时的包。 |
| 仅安装安全更新 | dnf update --security |
只应用与安全相关的补丁,适用于对变更控制严格的环境。 |
执行 dnf update 后,系统会列出将要更新的所有包,并要求您确认,输入 y 并回车即可开始下载和安装过程。

自动化补丁管理
为了确保系统及时获得更新,减少手动操作,可以配置自动更新,在CentOS 8/Stream上,dnf-automatic是实现此功能的理想工具。
- 安装工具:
dnf install dnf-automatic
- 配置:编辑配置文件
/etc/dnf/automatic.conf,根据需求设置更新模式(如apply_updates = yes表示自动安装更新)和通知方式。 - 启用并启动定时任务:
systemctl enable --now dnf-automatic.timer
这样,系统就会根据配置文件的定义,定期自动检查并应用更新。
检查是否需要重启
并非所有软件包更新都需要重启系统,更新Nginx或PHP等应用服务,通常只需重启对应服务即可,当更新了Linux内核、glibc或systemd等核心组件时,系统需要重启才能使更改生效。
您可以使用 dnf-utils 包中的 needs-restarting 工具来判断:

- 安装工具包:
dnf install dnf-utils - 运行检查命令:
needs-restarting -r如果该命令有输出,列出了需要重启才能生效的核心服务或库,那么您就应该安排一次系统重启。
相关问答FAQs
Q1: 更新所有软件包后,我必须重启服务器吗?
A: 不一定,这取决于更新了哪些软件包,如果更新的是应用程序(如Nginx, MySQL),您只需重启相应的服务即可,但如果更新了系统核心组件,如Linux内核、glibc(C库)或systemd(系统和服务管理器),那么必须重启服务器才能使更新完全生效,最可靠的判断方法是使用 needs-restarting -r 命令,如果它有输出,就表明需要重启。
Q2: dnf update 和 dnf update --security 有什么区别?我应该用哪个?
A: 主要区别在于更新的范围。dnf update 会应用所有可用的更新,包括安全修复、Bug修复和新功能添加,而 dnf update --security 则更为保守,它只会安装那些被标记为修复了安全漏洞的补丁,对于追求极致稳定、变更控制严格的生产环境,推荐使用 --security 选项来最小化更新带来的潜在风险,对于大多数开发或测试环境,定期执行 dnf update 以获得所有改进是更好的选择。