unattended-upgrades默认仅安装-security源的main/restricted组件,要安装-updates源的关键包(如内核、cloud-init),必须同时启用20auto-upgrades中的apt::periodic::unattended-upgrade "1"并修改50unattended-upgrades,取消注释添加"${distro_id}:${distro_codename}-updates";,且服务需active(running),日志和dry-run验证缺一不可。

如何让 unattended-upgrades 真正装上你想要的包
默认配置下,unattended-upgrades 几乎不装任何东西——它只认 ${distro_id}:${distro_codename}-security 源里的 main 和 restricted 组件,而很多关键修复(比如内核、cloud-init、systemd)实际发布在 -updates 源中。光改 20auto-upgrades 文件是没用的。
- 检查当前白名单:
grep Origin /etc/apt/apt.conf.d/50unattended-upgrades | grep -v '^//' - 若输出只有
"${distro_id}:${distro_codename}-security";,说明-updates源被忽略 - 编辑
/etc/apt/apt.conf.d/50unattended-upgrades,取消注释并添加这一行:"${distro_id}:${distro_codename}-updates"; - 注意:必须保留双引号和分号,且不能漏掉末尾分号,否则整个文件解析失败,服务静默退场
APT::Periodic::Unattended-Upgrade "1" 为什么设了也不生效
这个值只是“触发尝试”,不代表一定会升级。真正决定是否执行安装的,是 unattended-upgrades 服务本身的状态和依赖条件。
- 运行
sudo systemctl status unattended-upgrades,确认状态是active (running),不是inactive (dead)或disabled - 如果服务未启用,执行:
sudo systemctl enable --now unattended-upgrades -
20auto-upgrades中的值必须是带英文双引号的字符串,例如"1";写成1(无引号)会被 apt 忽略,日志里也不会报错,只会安静跳过 - 系统时间必须正确,否则 systemd timer 不触发 —— 可用
timedatectl status验证
哪些包会被自动跳过?怎么控制黑名单
即使源白名单开了,某些包仍默认不升级,比如内核、libc6、grub,这是防意外中断的保守策略。你得显式干预。
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 查看默认黑名单:
grep -A5 "Package-Blacklist" /etc/apt/apt.conf.d/50unattended-upgrades - 要放行内核更新(谨慎!),先取消注释
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";,再确保-updates源已启用 - 若想锁定特定版本(如禁止升级
nginx),加到黑名单里:"nginx";(注意末尾分号) - 黑名单项是精确匹配,
"nginx"不会拦住nginx-core,需单独列出
验证到底有没有下载或安装成功
别只看配置文件是否存在,得看日志和实际行为。模拟运行和查日志比重启服务更可靠。
- 手动触发一次(不实际安装):
sudo unattended-upgrades --dry-run -d,输出里出现Checking: linux-image-*.focal才算源配置生效 - 真实执行一次:
sudo unattended-upgrades -d,观察是否进入Installing packages阶段 - 查结果:
tail -n 20 /var/log/unattended-upgrades/unattended-upgrades.log,重点关注Initial blacklist和Allowed origins行 - 确认包是否真装上了:
apt list --installed | grep -E "(linux-image|systemd)"对比上次更新时间
最常被忽略的点:两个配置文件必须同时生效——20auto-upgrades 控节奏,50unattended-upgrades 控内容。少一个,就只剩空转。










