保证你的 CentOS 系统更新到最新是整个系统安全中最重要的部分之一。如果你不经常使用最新的系统安全补丁来更新系统,你的机器将会很容易被攻击。
推荐的方式就是使用yum-cron
自动更新。另外一个选项,就是手动更新整个系统。
在这个指南中,我们将会为你展示,如何在 CentOS 7 上手动更新系统软件包。CentOS 6 上也同样适用。
以 root 或者其他有 sudo 权限的用户身份登录,安装并且更新软件包。
RPM 是 RedHat 以及它的衍生版本 CentOS 版本上的软件包系统。
Yum 是 CentOS 上的默认软件包管理工具。它被用来从 CentOS 官方源仓库以及第三方源仓库安装,移除,下载,查询并且更新软件包。
在运行更新前,你可以使用下面的命令,检查到底有哪些软件可以更新:
sudo yum check-update
输出将会包含一系列可更新的软件包列表:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.s.uw.edu
* centos-sclo-rh: centos.s.uw.edu
* centos-sclo-sclo: centos.s.uw.edu
* epel: mirror.cherryservers.com
* extras: centos.s.uw.edu
* updates: centos.s.uw.edu
bind-libs-lite.x86_64 32:9.9.4-74.el7_6.2 updates
bind-license.noarch 32:9.9.4-74.el7_6.2 updates
curl.x86_64 7.29.0-51.el7_6.3 updates
device-mapper.x86_64 7:1.02.149-10.el7_6.8 updates
device-mapper-event.x86_64 7:1.02.149-10.el7_6.8 updates
device-mapper-event-libs.x86_64 7:1.02.149-10.el7_6.8 updates
device-mapper-libs.x86_64 7:1.02.149-10.el7_6.8 updates
想要更新单个软件包,使用yum install
命令加上想要升级软件包的名称。例如,升级curl
软件包,你可以运行:
sudo yum install curl
你将会得到将会被升级的软件包的概要,并被提示确认信息。回复y
,软件包将被升级:
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
curl x86_64 7.29.0-51.el7_6.3 updates 269 k
Updating for dependencies:
libcurl x86_64 7.29.0-51.el7_6.3 updates 222 k
Transaction Summary
================================================================================
Upgrade 1 Package (+1 Dependent package)
Total download size: 492 k
Is this ok [y/d/N]:
想要升级所有软件包,使用yum install
命令:
sudo yum check-update
这个命令将会更新软件源,并且给出一列可以被升级的所有软件包。当被提示时,输入y
继续。
有时候你想要严格限制软件包,不想它被更新到更新的版本。这个 YUM 插件versionlock
允许你锁定软件包到某个指定的版本。
这个插件默认没有被安装,因此,首先,你需要去安装它。
sudo install yum-plugin-versionlock
在安装期间,将会在你的系统上创建两个配置文件,存储在/etc/yum/pluginconf.d
目录。配置文件versionlock.conf
和包含被锁版本软件包的配置文件versionlock.list
。默认情况下,这个文件记录没有任何软件包。
想要锁定一个软件包的版本,你可以手动将软件包名添加到文件中,或者使用yum versionlock
命令加上软件包名称。例如,想要阻止所有的 PHP 软件包(所有以 php-开通的软件包)升级,你可以运行:
sudo yum versionlock php-*
这会将所有的 PHP 软件包锁定到当前的版本。
通过yum
安装和更新的软件包历史被记录在/var/log/yum
文件中。 你可以使用cat
或者tail
命令查看最近的记录:
sudo tail /var/log/yum.log
输出将会包括软件包的安装和更新记录:
Jul 23 16:00:04 Installed: 7:squid-3.5.20-12.el7_6.1.x86_64
Jul 31 22:27:16 Updated: libcurl-7.29.0-51.el7_6.3.x86_64
Jul 31 22:27:16 Updated: curl-7.29.0-51.el7_6.3.x86_64
安装升级和保持你的 CentOS 系统最新是很明确的,但是如果你管理很多 CentOS 机器,你要检查一个重要更新可能会非常耗时间。最好的选项就是设置自动更新。