ubuntu如何设置自动执行apt upgrade

在 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)时可能会卡住或失败。

  1. 编辑 Crontab:

    sudo crontab -e
    
  2. 在文件末尾添加一行(例如每天凌晨 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 (安全更新)
    • 对于普通的应用更新,建议人工手动执行,以免自动更新导致服务兼容性问题挂掉。
    • 自动重启功能在生产环境需谨慎开启。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注