自动更新

自动更新

我想为一个对 Linux 毫无经验的人设置一台 Ubuntu 笔记本电脑,她不想学习更多知识,只想使用一些程序(为家里的一位老成员更换 Windows;她真的很喜欢 ubuntu,觉得它很容易使用,而且很灵敏 :) )。

我想确保所有更新都已应用。我知道(并已启用/设置每天一次全面更新)unattended-upgrades。但是,我担心如果笔记本电脑的使用时间很短并且谨慎关闭,则无人看管的设备可能无法应用升级。

  • 这种担心是基于现实的吗?unattended-upgrades笔记本电脑开机时会尝试立即升级(似乎不是这样,因为apt每次开机时我仍会安装很多程序,尽管unattended-upgrades已经设置好了),还是只会在“每天凌晨 1 点”或类似情况下进行升级,在这种情况下可能永远不会被调用?

  • 从根 crontab 调用此类脚本(即添加)有@reboot bash script_update.sh帮助sudo crontab -e吗?:

#!/bin/bash

# A little script to:
#   - wait that internet is available
#   - wait for the automatic software update to be finished running
#   - apply the apt-get update and upgrade to the system
# This means that updates are installed automatically without
# asking confirmation. This should be ok for most vanilla uses.
#
# SETUP
#
# set the XX_SET_PATH to the log file
#
# To make it run automatically, put it in crontab:
# sudo crontab -e
# and in the root crontab that gets opened:
# @reboot bash PATH_TO_THE_SCRIPT.sh

function check_online
{
    netcat -z -w 5 8.8.8.8 53 && return 1 || return 0
}

function wait_online
{
    echo "wait to be online"
    declare -i IS_ONLINE=0

    while [ $IS_ONLINE -eq 0 ]; do
        # We're offline. Sleep for a bit, then check again
        sleep 2;
        check_online
        IS_ONLINE=$?
    done

    echo "now online"
}

{
    echo " "
    echo "new reboot"
    date
    whoami
    wait_online
    echo "wait for 20 minutes to make sure no conflicting catch of dpkg lock"
    sleep 1200
    echo "now start update upgrade..."
    apt-get update
    apt-get upgrade -y
    apt-get autoremove
} >> XX_SET_PATH 2>&1

答案1

无人值守升级 (UU) 将在计时器发出指示后立即尝试运行。如果系统在计时器到期时恰好处于关闭状态,则 UU 将在启动期间注意到这一点,并在启动几分钟后运行。

  • 您无需添加自己的脚本。UU 开发人员已预见到此用例。

您自己的用例(“我仍然用 apt 安装了很多东西“) 在人们从多个渠道更新时会发生:-security、-updates、第三方存储库等。UU 的默认设置是仅使用 -security。您可以根据需要更改这些设置,但对于普通用户来说通常没有必要。

  • 您无需更改 UU 设置来满足您的用途。默认设置似乎适合您设想的用户预期用途。

Firefox 和 Ubuntu 分发的其他网络浏览器(即非 Chrome)通过 -security pocket 进行更新。这意味着您的用户将始终通过 UU 获得最安全的浏览器版本。

建议:为普通用户设置 LTS 版本可能是明智之举,以减少您必须提供的支持量。

相关内容