Linux 更新软件命令及选择性更新配置方法

Eric 教程 257 次浏览 抢沙发

当创建 VPS 后,应及时运行系统软件更新。以修补已知的安全漏洞,同时也避免后续部署服务可能遇到的兼容问题。各主要 Linux 发行版系统使用的软件包管理器不尽相同,因此更新命令也有所区别。

主流 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 参数),这样会自动总是下一步安装。

上面命令默认更新所有软件包、系统和内核版本。若是有其它考虑,例如升级可能与某些软件有兼容问题。可以排除掉一些软件包更新,具体用法参考下面说明。

CentOS 选择性更新
作用描述 操作命令
查询可更新的软件包列表 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 参数(如果存在,默认识别最后一个),排除多个软件用空格隔开。

Ubuntu & Debian 选择性更新
作用描述 操作命令
列出待更新的软件包列表 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 <内核包名称> 命令锁定内核更新
Fedora 选择性更新
作用描述 操作命令
检查可更新的软件包列表 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

Arch Linux 选择性更新
作用描述 操作命令
查询可更新的软件包列表 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 参数可以排除软件组。

发表评论

电邮地址用于 Gravatar 头像显示,不会被公开可见。