无人值守升级无法正常工作

Tho*_*ger 8 upgrade unattended-upgrades

我有

Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.15.0-24-generic x86_64)

15 packages can be updated.
7 updates are security updates.
Run Code Online (Sandbox Code Playgroud)

我观察了这几个星期并尝试了很多方法来修复它,但我无法让它运行。无人值守升级不会升级我的服务器。

我安装了

# apt-get install unattended-upgrades
Reading package lists... Done
Building dependency tree
Reading state information... Done
unattended-upgrades is already the newest version (0.90ubuntu0.9).
0 upgraded, 0 newly installed, 0 to remove and 9 not upgraded.

# apt-get install apt-listchanges
Reading package lists... Done
Building dependency tree
Reading state information... Done
apt-listchanges is already the newest version (2.85.14ubuntu1).
0 upgraded, 0 newly installed, 0 to remove and 9 not upgraded.
Run Code Online (Sandbox Code Playgroud)

这是我的 /etc/apt/apt.conf.d/10periodic

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";
Run Code Online (Sandbox Code Playgroud)

这是我的 /etc/apt/apt.conf.d/50unattended-upgrades

Unattended-Upgrade::Allowed-Origins {
        "${distro_id}:${distro_codename}";
        "${distro_id}:${distro_codename}-security";
        "${distro_id}ESM:${distro_codename}";
        "${distro_id}:${distro_codename}-updates";
};

Unattended-Upgrade::Package-Blacklist {
        "open-vm-tools";
};

Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::MinimalSteps "true";
Unattended-Upgrade::InstallOnShutdown "true";
Unattended-Upgrade::Mail "root";
Unattended-Upgrade::MailOnlyOnError "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "07:00";
Acquire::http::Dl-Limit "0";
Run Code Online (Sandbox Code Playgroud)

这是我在日志文件 /var/log/unattended-upgrades/unattended-upgrades.log 中的内容

INFO Initial blacklisted packages: open-vm-tools
INFO Initial whitelisted packages:
INFO Starting unattended upgrades script
INFO Allowed origins are: ['o=Ubuntu,a=xenial', 'o=Ubuntu,a=xenial-security', 'o=UbuntuESM,a=xenial', 'o=Ubuntu,a=xenial-updates']
INFO Initial blacklisted packages: open-vm-tools
INFO Initial whitelisted packages:
INFO Starting unattended upgrades script
INFO Allowed origins are: ['o=Ubuntu,a=xenial', 'o=Ubuntu,a=xenial-security', 'o=UbuntuESM,a=xenial', 'o=Ubuntu,a=xenial-updates']
Run Code Online (Sandbox Code Playgroud)

有谁知道出了什么问题?

cue*_*dee 8

上面我的答案相反:“ /etc/apt/apt.conf.d/50unattended-upgrades确实有:

Unattended-Upgrade::InstallOnShutdown "false";
Run Code Online (Sandbox Code Playgroud)

但我仍然看到:

Welcome to Ubuntu 18.04.3 LTS (GNU/Linux [...] x86_64)
[...]
29 packages can be updated.
0 updates are security updates.
Run Code Online (Sandbox Code Playgroud)

那么为什么这 29 个软件包没有更新呢?

事实证明,“ /etc/apt/apt.conf.d/50unattended-upgrades”还包含以下声明:

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 have it installed, but if
        // available, the policy for updates is such that unattended-upgrades
        // should also install from here by default.
        "${distro_id}ESM:${distro_codename}";
//      "${distro_id}:${distro_codename}-updates";
//      "${distro_id}:${distro_codename}-proposed";
//      "${distro_id}:${distro_codename}-backports";
};
Run Code Online (Sandbox Code Playgroud)

对我来说修复的关键只是取消注释这一行:

//      "${distro_id}:${distro_codename}-updates";
Run Code Online (Sandbox Code Playgroud)


小智 5

如果按照 @cuedee 的答案后仍然无法正常工作,您可以尝试进行试运行,看看是否收到某种错误消息或警告。

sudo unattended-upgrades -v -d
Run Code Online (Sandbox Code Playgroud)

就我而言,输出解释说我的连接是按流量计费的(来自手机的热点),并且默认情况下无人值守升级不允许通过按流量计费的连接进行更新。我用以下行更改了它/etc/apt/apt.conf.d/50unattended-upgrades

Unattended-Upgrade::Skip-Updates-On-Metered-Connections "false";
Run Code Online (Sandbox Code Playgroud)


Tho*_*ger 4

我找到了原因:

Unattended-Upgrade::InstallOnShutdown "true";
Run Code Online (Sandbox Code Playgroud)

这意味着更新仅在关机前安装。由于这台机器是 24/7 服务器,更新从未发生过。