Linux 更新软件命令及选择性更新配置方法
当创建 VPS 后,应及时运行系统软件更新。以修补已知的安全漏洞,同时也避免后续部署服务可能遇到的兼容问题。各主要 Linux 发行版系统使用的软件包管理器不尽相同,因此更新命令也有所区别。
操作系统 | 更新命令 |
---|---|
CentOS | yum update |
Ubuntu & Debian | apt-get update && apt-get upgrade |
Fedora | dnf upgrade |
Arch Linux | pacman -Syu |
Gentoo | emerge --sync && emerge -uDN @world |
如果在更新过程中,不想手动确认安装,可以追加 -y
参数(适用 yum、 apt-get 和 dnf 包管理器,pacman 使用 --noconfirm
参数,emerge 则用 --ask -y
参数),这样会自动总是下一步安装。
上面命令默认更新所有软件包、系统和内核版本。若是有其它考虑,例如升级可能与某些软件有兼容问题。可以排除掉一些软件包更新,具体用法参考下面说明。
作用描述 | 操作命令 |
---|---|
查询可更新的软件包列表 | yum check-update |
更新指定软件包 | yum update <软件包名称> |
排除指定软件包更新 | yum update --exclude=<软件包名称> |
排除所有与内核相关的软件包 | yum update --exclude=kernel* |
不更新系统版本,仅更新其他软件包 | yum update --exclude=centos-release* |
除了使用命令参数排除外,还可以在/etc/yum.conf
配置文件添加 exclude 参数排除。
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exclude=kernel* centos-release*
注:不要添加多个 exclude 参数(如果存在,默认识别最后一个),排除多个软件用空格隔开。
作用描述 | 操作命令 |
---|---|
列出待更新的软件包列表 | apt-get update && apt-get --show-upgraded upgrade 也可使用 apt-show-versions -u 查询更详细列表(需安装软件支持) |
更新指定软件包 | apt-get install <软件包名称> |
排除指定软件包更新 | apt-mark hold <软件包名称> 查询禁止自动更新的软件包列表 apt-mark showhold 若日后需恢复自动更新,运行 apt-mark unhold <软件包名称> |
禁止系统内核自动更新 | 1. 运行 uname -r 命令查看当前内核版本(这时显示的不是完整名称,需要使用 dpkg --get-selections linux-image* 查询内核完整名称)2. 运行 apt-mark hold <内核包名称> 命令锁定内核更新 |
作用描述 | 操作命令 |
---|---|
检查可更新的软件包列表 | dnf check-update |
更新指定软件包 | dnf update <软件包名称> |
排除指定软件包更新 | dnf update --exclude=<软件包名称> |
排除所有与内核相关的软件包 | dnf update --exclude=kernel* |
不更新系统版本,仅更新其他软件包 | dnf update --exclude=fedora-release* |
dnf 和 yum 一样,支持编辑 /etc/dnf/dnf.conf
配置文件用 excludepkgs
参数排除。
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
exclude=kernel* fedora-release*
例如上面排除了与系统版本和内核相关的软件包更新。如果之后想要恢复更新,除删除配置文件设置外,可以在更新命令里使用 disableexcludes
选项临时绕过配置文件约束。例如 dnf --disableexcludes=all upgrade
。
作用描述 | 操作命令 |
---|---|
查询可更新的软件包列表 | pacman -Q --upgrades |
更新指定软件包 | pacman -S <软件包名称> |
排除指定软件包更新 | pacman -Syu --ignore <软件包名称> |
排除系统内核自动更新 | pacman -Syu --ignore linux,linux-headers |
也可编辑 /etc/pacman.conf
配置文件使用 IgnorePkg
参数排除。
[options]
Architecture = auto
IgnorePkg = linux linux-headers
IgnoreGroup =
注:其中 IgnoreGroup
参数可以排除软件组。