2

无需繁琐手动操作,配置 Ubuntu 无人值守升级

 1 year ago
source link: https://www.sysgeek.cn/ubuntu-unattended-upgrades/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Ubuntu

Ubuntu 是广泛应用于服务器、桌面和嵌入式设备的 Linux 发行版之一,提供了丰富的软件包和工具库,用户可根据需求进行安装和配置。然而,由于更新和软件包众多,要保持系统最新和安全,则具有一定的挑战性,这时 Ubuntu 无人值守升级便可派上用场。

本文系统极客将为大家将介绍 Ubuntu 无人值守升级的作用、优点和功能,以及如何通过命令行「终端」进行配置。

什么是 Ubuntu 无人值守升级

  • 无人值守升级包是在 Ubuntu 系统上自动安装安全和其他更新的工具。它在后台静默运行,定期检查更新并自动下载和安装,无需用户干预。
  • 无人值守升级通过确保系统与最新的更新和补丁保持同步,保证 Ubuntu 系统的安全性和稳定性,是一个非常重要的自动化工具。

Ubuntu 无人值守升级的特点和功能

  • 自动化更新:可以自动下载和安装更新,节省用户时间和精力。
  • 提高安全性:确保 Ubuntu 系统与最新的安全更新和补丁保持同步,降低恶意软件攻击和系统漏洞的风险。
  • 增强稳定性:无人值守升级通过保持系统最新,确保系统的稳定性和可靠性。
  • 自定义设置:用户可以根据自己的需要自定义设置,例如自动安装哪些更新、忽略哪些更新以及何时安装它们。
  • 邮件通知:可以向用户发送已安装更新的电子邮件通知,提供系统更新的透明度和增强控制。

步骤 1:更新 Ubuntu

在安装和设置无人值守升级之前,建议先更新 Ubuntu 系统以避免冲突。要更新 Ubuntu 系统,请打开「终端」并运行以下命令:

复制
sudo apt update && sudo apt upgrade

该命令会将所有已安装的软件包及其依赖关系更新到最新版本。根据系统可用的更新数量,可能需要一些时间。

步骤2:安装 Ubuntu 无人值守升级包

1要安装无人值守升级包,请打开「终端」并运行以下命令:

复制
sudo apt install unattended-upgrades
安装 Ubuntu 无人值守升级包
安装 Ubuntu 无人值守升级包

默认情况下,Ubuntu 无人值守升级包应该已经安装。但是,如果已删除该包,请使用上述命令重新安装。

2安装或升级某些应用后可能需要重启系统,如果您希望在自动升级之后也自动重启 Ubuntu 系统,还需要安装apt-config-auto-update包。请使用以下命令进行安装:

复制
sudo apt install apt-config-auto-update

3(可选)对于笔记本电脑用户,建议安装 powermgmt-base 软件包以应用适用于电池的无人值守选项。要安装此软件包,请打开「终端」并运行以下命令:

复制
sudo apt install powermgmt-base

安装完该软件包后,需要按需对其进行配置。例如,需要自定义自动安装哪些更新、忽略哪些更新以及何时安装它们。

无人值守升级包需要管理员权限才能运行。因此,在运行本文中提到的所有命令时,都需要使用 sudo 命令。

4建议您验证无人值守升级包是否正常工作。要执行此操作,请打开「终端」并输入以下命令:

复制
sudo unattended-upgrades --dry-run --debug

熟悉 Ubuntu 无人值守升级的 systemctl 命令也非常重要,因为在进行配置更改或系统重启后,可能需要检查其状态。要检查无人值守升级的状态,请使用以下命令:

复制
systemctl status unattended-upgrades
查看 unattended-upgrades 服务状态
查看 unattended-upgrades 服务状态

以下 systemctl 命令可以控制:启动、停止、开机启用、开机禁用或重新启动无人值守升级服务:

启动无人值守升级服务:

复制
sudo systemctl start unattended-upgrades

停止无人值守升级服务:

复制
sudo systemctl stop unattended-upgrades

在系统启动时启用无人值守升级服务:

复制
sudo systemctl enabe unattended-upgrades

在系统启动时禁用无人值守升级服务:

复制
sudo systemctl disable unattended-upgrades

重启无人值守升级服务:

复制
sudo systemctl restart unattended-upgrades

步骤 3:配置 Ubuntu 无人值守升级

下面我们将介绍,如何使用「终端」命令对无人值守升级进行配置。这些设置是可选的,可以根据您的需求进行个性化定制。

我们将详细解释每项配置的目的和功能,以帮助您了解在 Ubuntu 系统上配置无人值守升级的过程。这能够帮助您做出明智的决策。

在进入配置文件之前,先来看看无人值守升级包的所有 CLI 选项及其说明的摘要:

选项描述
-h, –help显示帮助信息。
-d, –debug启用调试消息。
–apt-debug使用 apt/libapt 打印详细的调试消息。
-v, –verbose输出详细信息。
–dry-run模拟升级过程和下载但不安装。
–download-only只下载升级包但不安装。
–minimal-upgrade-steps以最少的步骤升级包。
–no-minimal-upgrade-steps一起升级所有软件包,而不分成较小的集合。

这些选项可以在「终端」中运行unattended-upgrade命令时使用,以控制自动升级过程的行为。例如:

  • --dry-run选项可以用于在不实际对系统进行任何更改的情况下测试升级过程。
  • --download-only 选项可用于下载升级包而不安装它们。
  • 默认情况下,无人值守升级会使用 --minimal-upgrade-steps 选项,将软件包分批次升级。
  • 如果您需要将所有软件包一起升级,可以使用--no-minimal-upgrade-steps选项。

在配置无人值守升级时,了解这些选项非常重要,以确保其行为符合您的偏好和要求。

编辑配置文件

编辑配置文件时,要使用具有 root 权限的文本编辑器,如 nano 或 vi。要用 vi 打开配置文件,请运行以下命令:

复制
sudo vi /etc/apt/apt.conf.d/50unattended-upgrades

您可以修改配置文件列出的各种选项。要激活选项,请删除文件中的注释(以//开头的行)。

编辑 unattended-upgrades 配置文件
编辑 unattended-upgrades 配置文件

Allowed Origins 允许的来源

该选项指定应从哪些来源安装更新。默认情况下,仅允许安装security「安全」和updates「更新」存储库。您可以取消注释此选项,并添加所需的其他存储库到列表中,如下所示:

复制
Unattended-Upgrade::Allowed-Origins {
      "${distro_id}:${distro_codename}";
      "${distro_id}:${distro_codename}-security";
      "${distro_id}:${distro_codename}-updates";
      "${distro_id}:${distro_codename}-proposed";
      "${distro_id}:${distro_codename}-backports";
};

Package Blacklist 软件包黑名单

该选项允许指定应从自动更新中排除的软件包。要排除软件包,请取消注释此选项,并按照下面的示例添加排除的软件包:

复制
Unattended-Upgrade::Package-Blacklist {
      "package-name-xx";
      "package-name-xxx";
};

AutoFixInterruptedDpkg

此选项确定系统是否应自动修复中断的dpkg安装。若要启用自动修复,请按以下示例设置该值为true

复制
Unattended-Upgrade::AutoFixInterruptedDpkg "true";

DevRelease “auto”

此选项指定是否自动升级到开发版本。默认情况下,该选项已禁用。若要启用自动升级到开发版本,请将该选项的值设置为auto,如下所示:

复制
Unattended-Upgrade::DevRelease "auto";

MinimalSteps “true”

此选项指定升级时是否执行最小步骤。默认情况下,此选项已启用。要禁用最小步骤,请按下面的示例设置值为false

复制
Unattended-Upgrade::MinimalSteps "false";

InstallOnShutdown “false”

此选项指定是否在关机时安装更新。默认情况下,此选项已禁用。要启用关机时安装更新,请按照以下示例将值设置为true

复制
Unattended-Upgrade::InstallOnShutdown "true";

此选项用于指定发送电子邮件通知的地址。默认情况下,不发送通知。要指定通知电子邮件地址,请按以下示例添加一个字符串值:

复制
Unattended-Upgrade::Mail "[email protected]";

MailReport “on-change”

此选项用于指定何时发送电子邮件通知。默认情况下,仅在有更改时发送通知。要每次发送通知,请按照下面的示例将值设置为on-start

复制
Unattended-Upgrade::MailReport "on-start";

Remove-Unused-Kernel-Packages

此选项指定是否在升级后删除未使用的内核包。默认情况下,此选项已启用。不删除未使用的内核包,请按照以下示例将值设置为false

复制
Unattended-Upgrade::Remove-Unused-Kernel-Packages "false";

Remove-New-Unused-Dependencies

该设置控制在包升级后删除 Ubuntu 系统不再需要的新依赖项。默认情况下,此设置已启用,任何不再需要的新依赖项都将自动从系统中删除。若要启用此设置,请使用以下配置:

复制
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";

如果要保留这些新依赖项,可以将值更改为false将该其禁用。但需要注意,这可能会导致未使用的依赖项在系统上积累,占用宝贵的磁盘空间。

Remove-Unused-Dependencies

此选项指定升级后是否删除未使用的依赖项。默认情况下,该选项已禁用。要启用删除未使用的依赖项,请按照以下示例将值设置为true

复制
Unattended-Upgrade::Remove-Unused-Dependencies "true";

Automatic-Reboot

此选项指定在升级后是否自动重启 Ubuntu 系统。默认情况下,此选项已禁用。要启用自动重启,请按照下面的示例将值设置为true

复制
Unattended-Upgrade::Automatic-Reboot "true";

Automatic-Reboot-WithUsers

此选项指定在有用户登录时是否自动重启系统。默认情况下,此选项已启用。若要禁用此选项,请按照以下示例将值设置为false

复制
Unattended-Upgrade::Automatic-Reboot-WithUsers "false";

Automatic-Reboot-Time

此选项指定升级后系统自动重启的时间。默认设置为02:00。要更改重启时间,请照以下示例修改该值:

复制
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

Acquire::http::Dl-Limit

此选项指定软件包的最大下载速度,单位为每秒千字节。默认情况下,此选项已禁用。若要启用下载速度限制,请按照以下示例设置所限制的速度值:

复制
Acquire::http::Dl-Limit "100";

SyslogEnable

此选项指定是否将升级事件记录到系统日志中。默认情况下,此选项已启用。要禁用记录,请按照以下示例将值设置为false

复制
Unattended-Upgrade::SyslogEnable "false";

SyslogFacility

此选项用于指定升级事件应记录到哪个设施。默认情况下,事件会记录到daemon设施。若要将事件记录到其他设施,请按照以下示例修改值:

复制
Unattended-Upgrade::SyslogFacility "local7";

OnlyOnACPower

此选项指定是否只有在系统连接到交流电源时才执行升级。默认情况下,该选项被禁用。若要仅在使用交流电源时启用升级,请按照以下示例将值设置为true

复制
Unattended-Upgrade::OnlyOnACPower "true";

Skip-Updates-On-Metered-Connections

该选项指定当系统连接到付费连接时是否跳过更新。默认情况下,该选项已启用。若要在付费连接时下载更新,请按照以下示例将值设置为false

复制
Unattended-Upgrade::Skip-Updates-On-Metered-Connections "false";

Verbose

此选项指定是否输出详细的升级信息。默认情况下,该选项已禁用。若要启用详细输出,请按以下示例将值设置为true

复制
Unattended-Upgrade::Verbose "true";

Debug

该选项指定是否在升级过程中输出调试信息。默认情况下,该选项已禁用。要启用调试输出,请按照以下示例将值设置为true

复制
Unattended-Upgrade::Debug "true";

Allow-downgrade

该选项指定是否允许在升级过程中降级软件包。默认情况下,该选项已禁用。要允许降级,请按照以下示例将值设置为true

复制
Unattended-Upgrade::Allow-downgrade "true";

允许降级可能会导致系统不稳定或存在安全漏洞。建议仅在必要时启用此选项,并仔细考虑所涉及的风险。

测试和应用更改

在对配置文件进行任何更改后,务必运行以下命令以确保更改已生效:

复制
sudo unattended-upgrades --dry-run --debug

该命令会模拟升级运行,并显示配置文件导致的错误或警告。如果一切正常,就可以运行下面的命令来执行实际的升级:

复制
sudo unattended-upgrades

该命令将根据配置文件的设置自动检查并安装可用的升级包。

通过上面的介绍,您现在应该更好地了解了如何在 Ubuntu 系统上配置和修改 Unattended-Upgrades 无人值守升级包。

步骤 4:使用 Cron Job 定期执行 Ubuntu 无人值守升级

要在您的 Ubuntu 系统上安排自动无人值守升级,可以使用 Cron Job。Cron Job 是 Linux 中的基于时间的任务调度程序,允许您在指定的时间或间隔自动运行命令或脚本。

要为无人值守升级创建 Cron Job,请按照以下步骤:

1在「终端」中运行以下命令打开 crontab 配置文件:

复制
sudo crontab -e

2这将在 nano 或 vi 编辑器中打开 crontab 文件,将以下行添加到文件底部:

复制
0 0 * * * /usr/bin/unattended-upgrade -d
使用 Cron Job 定期执行 Ubuntu 无人值守升级
使用 Cron Job 定期执行 Ubuntu 无人值守升级

这行命令指定了unattended-upgrade命令应在每天午夜运行(0 0 * * *)。

步骤 5:查看 Ubuntu 无人值守升级日志

Unattended-Upgrades 软件包默认将所有升级活动记录到系统日志。日志可以在/var/log/syslog文件和其他系统日志中找到。

要查看 Ubuntu 无人值守升级日志,请使用以下命令:

复制
sudo grep unattended-upgrades /var/log/syslog

该命令会在 syslog 文件中搜索包含 unattended-upgrades 关键字条目,并在屏幕上输出。您也可以使用以下命令显示 syslog 文件中的最后 50 个条目:

复制
sudo tail -n 50 /var/log/syslog | grep unattended-upgrades

除了上述命令之外,您还可以使用各种grep选项根据特定标准过滤日志。例如,要按日期和时间过滤日志,可以使用以下命令:

复制
sudo grep "unattended-upgrades.*YYYY-MM-DD" /var/log/syslog

YYYY-MM-DD替换为所需的日期,格式为 年-月-日。该命令将显示包含 unattended-upgrades 关键词且与指定日期匹配的所有日志条目。

您也可以使用以下命令按软件包名称过滤日志:

复制
sudo grep "unattended-upgrades.*<package_name>" /var/log/syslog

<package_name>替换为要搜索的软件包名称。此命令将显示所有包含 unattended-upgrades 关键词并匹配指定软件包名称的日志条目。

使用上述命令,您可以轻松检查和过滤 Ubuntu 系统中的 Unattended-Upgrades 日志,并解决升级过程中可能出现的任何问题。


在 Ubuntu 系统中设置和配置无人值守升级可以极大地提高系统的安全性和稳定性。它能够自动安装安全更新和补丁,确保系统随时具备最新的安全修复程序,无需手动检查更新并安装。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK