更新/升级 Debian 并跳过任何交互

更新/升级 Debian 并跳过任何交互

我正在运行一个小脚本来更新和升级一些 Debian 机器,但几周以来它总是由于终端显示的一些“新闻”而停止。手动升级时,我看到某些软件显示“全屏”(见下面的屏幕截图),强制按“q”。我不想更改任何软件,所以我想找到一个解决方案,允许在升级时跳过每个交互式屏幕。

通常我很好用:

sudo apt-get update -y 
sudo apt-get upgrade -y

在我意识到升级过程被中断而没有任何超时后,我也尝试使用这个解决方案邮政:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y upgrade

但不幸的是,结果相同。有没有人有一个解决方案可以在不中断的情况下升级机器?

xorg-server,按 q 退出

更新

首先我刚刚执行:

DEBIAN_FRONTEND=noninteractive

二次编辑 /etc/dpkg/dpkg.cfg 文件为:

# dpkg configuration file
#
# This file can contain default options for dpkg.  All command-line
# options are allowed.  Values can be specified by putting them after
# the option, separated by whitespace and/or an `=' sign.
#

# Do not enable debsig-verify by default; since the distribution is not using
# embedded signatures, debsig-verify would reject all packages.
no-debsig

# Log status changes and actions to a file.
log /var/log/dpkg.log

force-confold
force-confdef

最后我执行了:

sudo apt-get upgrade -yq

这完成了关于“按 q 退出”的技巧 -伟大的!

我认为它也正在努力组合执行的命令:

DEBIAN_FRONTEND=noninteractive
sudo apt-get -o Dpkg::Options::="--force-confnew --force-confdef" --force-yes -yq upgrade

不幸的是,现在又出现了另一个类似的问题:

在此输入图像描述

也在尝试编辑/etc/apt/listchanges.conf不幸的是没有成功:

[apt]
frontend=none
email_address=root
confirm=0
save_seen=/var/lib/apt/listchanges.db
which=news

解决方案

我注意到(抱歉,这对于高级 Linux 用户来说是显而易见的)当您通过脚本执行命令时,bash 的行为与直接在控制台中输入命令时不同。

总而言之,我的脚本解决方案添加以下内容就足够了-yp参数并设置DEBIAN_FRONTEND。为了安全起见,我会编辑/etc/dpkg/dpkg.cfg文件也。

#!/bin/bash
DEBIAN_FRONTEND=noninteractive
export DEBIAN_FRONTEND
apt-get -yq update
apt-get -yq upgrade

答案1

你应该设置DEBIAN_FRONTEND=noninteractive,这将阻止 debconf 提示出现。

之后,将 force-confold和添加force-confdef到您的/etc/dpkg/dpkg.cfg文件中。然后使用该-y选项

sudo apt-get -y update && sudo apt-get -y upgrade

或使用此命令

apt-get -o Dpkg::Options::="--force-confnew --force-confdef" --force-yes -y upgrade

如果它不起作用尝试

apt-get -o Dpkg::Options::="--force-confnew" --force-yes -y upgrade

答案2

更新信息由 给出apt-listchanges。如果您不想看到这些详细信息,则可以完全删除该包。否则,您可以使用/etc/apt/listchanges.conf;配置它就你而言,

frontend=mail

或者

frontend=none

将避免安装被中断。

apt-listchanges在这些情况下应该做正确的事情,因此应该可以通过其他方式修复它,以便它仍然以交互模式显示更新详细信息。特别是您可以尝试添加该-q选项apt-get。)

请注意,只需运行

DEBIAN_FRONTEND=noninteractive

不会改变任何东西,您需要确保它最终出现在进程的环境中apt-get

export DEBIAN_FRONTEND

相关内容