APT 无人值守升级,无需用户交互

APT 无人值守升级,无需用户交互

我正在设置一个 cron 作业来更新我的 Debian 服务器,但存在一个潜在的问题。如果我尝试使用从终端升级apt -y upgrade,即使有这个-y选项,当 APT 配置它们时,某些软件包会显示 ncurses 提示(或 Y/I/N/O/D/Z 提示),以获取我总是留下的随机选项默认情况下。如果命令不是由我坐在电脑前运行,而是由 cron 运行,并且没有用户交互的方式,如何避免这些问题?

答案1

我同意 Stephen Kitt 的建议,即在运行台式机/笔记本电脑/服务器的通常情况下使用无人值守升级。
以下是我在构建自定义 Amazon 计算机映像 (AMI) 的脚本中处理此问题的方法,而无需等待无人值守升级。这是在 Ubuntu 16.x 和 20.x 上使用较低级别的apt-get命令,但我认为它也适用于 Debian。

例如,“dist-upgrade”命令,其中 grub 更新可能会触发提示以接受新的 conf 文件或保留旧的文件:

DEBIAN_FRONTEND=noninteractive \
  apt-get -y \
    -o DPkg::Options::="--force-confold" \
    -o DPkg::Options::="--force-confdef" \
    dist-upgrade

我将命令分成几行,以便于阅读。
环境变量设置DEBIAN_FRONTEND=noninteractive是避免提示 Y/I/N/O/D/Z 答案的要素之一。另一个要素是dpkg清楚地表明您想要的选项。
--force-confold--force-confdef的选项dpkg--force-confdef如果包定义了默认操作,则选择默认操作。如果未定义默认值,则--force-confold选择旧版本,或--force-confnew选择新版本。
在我的用例中,我想要旧版本。

更多讨论和细节见上一个问题

相关内容