在 Ubuntu 中设置自动更新和升级,最推荐、最标准的方法是使用 unattended-upgrades 工具。它比简单的 Cron 脚本更安全,因为它能处理包依赖关系、配置保留以及系统锁。
以下是详细的设置步骤:
方法一:使用 unattended-upgrades (官方推荐)
1. 安装并启用服务
大多数 Ubuntu 版本默认已安装此工具。如果没有,请先安装:
sudo apt update
sudo apt install unattended-upgrades
接下来,通过以下命令启用自动更新(会弹出一个蓝色界面,选择 Yes 并回车):
sudo dpkg-reconfigure --priority=low unattended-upgrades
这会自动创建 /etc/apt/apt.conf.d/20auto-upgrades 配置文件。
2. 配置更新范围(重要)
默认情况下,该工具通常只安装安全更新。如果你希望它像执行 apt upgrade 一样更新所有软件,需要修改配置文件。
打开配置文件:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
找到 Unattended-Upgrade::Allowed-Origins 部分。
你需要取消注释(去掉行首的 //)包含 -updates 的那一行。
修改前:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
// Extended Security Maintenance; doesn't necessarily exist for
// every release and this system may not be enabled
"${distro_id}ESMApps:${distro_codename}-apps-security";
"${distro_id}ESM:${distro_codename}-infra-security";
// "${distro_id}:${distro_codename}-updates"; <-- 这一行通常是被注释的
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
修改后(启用普通更新):
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
...
"${distro_id}:${distro_codename}-updates"; <-- 去掉双斜杠
...
};
3. 配置自动重启(可选)
如果更新了内核(Kernel),通常需要重启才能生效。你可以设置自动重启。
在同一个文件 (50unattended-upgrades) 中向下滚动,找到以下设置并修改:
// 设置为 true 启用自动重启
Unattended-Upgrade::Automatic-Reboot "true";
// 设置重启时间(例如凌晨 02:00)
Unattended-Upgrade::Automatic-Reboot-Time "02:00";
4. 自动清理旧内核和依赖(可选)
为了防止 /boot 分区填满,建议开启自动移除未使用的依赖:
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
保存文件并退出 (Ctrl+O, Enter, Ctrl+X)。
5. 检查执行频率
检查 /etc/apt/apt.conf.d/20auto-upgrades 文件,确保内容如下:
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
- “1” 表示每天执行一次。
- “0” 表示禁用。
6. 测试配置
你可以运行以下命令来模拟运行(不会真的安装),查看是否有报错:
sudo unattended-upgrades --dry-run --debug
方法二:使用 Crontab (简单粗暴,不推荐用于生产环境)
如果你不想使用专门的工具,只想强制每天运行命令,可以使用 Crontab。 注意: 这种方法在遇到配置文件冲突(需要按 Y/N)时可能会卡住或失败。
编辑 Crontab:
sudo crontab -e在文件末尾添加一行(例如每天凌晨 3 点执行):
0 3 * * * apt update && apt upgrade -y && apt autoremove -y-y参数表示自动确认所有提示。
如何查看更新日志?
如果使用方法一 (unattended-upgrades),日志文件位于: /var/log/unattended-upgrades/
你可以查看最近的日志:
cat /var/log/unattended-upgrades/unattended-upgrades.log
总结建议
- 个人电脑/测试机:推荐使用 方法一,并开启
-updates源。 - 生产环境服务器:
- 推荐使用 方法一,但通常只开启
-security(安全更新)。 - 对于普通的应用更新,建议人工手动执行,以免自动更新导致服务兼容性问题挂掉。
- 自动重启功能在生产环境需谨慎开启。
- 推荐使用 方法一,但通常只开启
