#!/bin/bash
apt-get remove apt-listchanges --assume-yes --force-yes &&
#using export is important since some of the commands in the script will fire in a subshell
export DEBIAN_FRONTEND=noninteractive &&
export APT_LISTCHANGES_FRONTEND=none &&
#lib6c was an issue for me as it ignored the DEBIAN_FRONTEND environment variable and fired a prompt anyway. This should fix it
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections &&
echo "executing wheezy to jessie" &&
find /etc/apt -name "*.list" | xargs sed -i '/^deb/s/wheezy/jessie/g' &&
echo "executing autoremove" &&
apt-get -fuy --force-yes autoremove &&
echo "executing clean" &&
apt-get --force-yes clean &&
echo "executing update" &&
apt-get update &&
echo "executing upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy upgrade &&
echo "executing dist-upgrade" &&
apt-get --force-yes -o Dpkg::Options::="--force-confold" --force-yes -o Dpkg::Options::="--force-confdef" -fuy dist-upgrade
-y, --yes, --assume-yes
Automatic yes to prompts; assume "yes" as answer to all prompts
run non-interactively. If an undesirable situation, such as
changing a held package, trying to install a unauthenticated
package or removing an essential package occurs then apt-get will
abort. Configuration Item: APT::Get::Assume-Yes.
如果您设置
DEBIAN_FRONTEND=noninteractive
(以停止出现 debconf 提示)并将和添加force-confold
到force-confdef
您的/etc/dpkg/dpkg.cfg
文件中,您应该拥有完全非交互式的软件包安装体验。任何仍然提示您输入信息的软件包都有一个发布严重错误(我说这既是自动化迷,也是 Debian 开发人员)。Florian Lohoff发布了一种方法,可以将 womble 建议的内容整合到单个命令中:
当然,您也可以使用
-o Dpkg::Options::="--force-confnew --force-confdef"
(在dpkg 手册页中搜索 confnew)。我不确定在什么情况下这会有所作为。我个人需要非交互式升级来更新原始图像,在这种情况下,我认为总是选择新的配置文件(不带--force-confdef
)是合理的。尽管 womble 上面的回答总体上很好,但它对我不起作用,我必须做一些额外的研究才能 100% 无人值守。我想我会以简洁的方式分享结果,以便让未来的访问者更简单。
以下是一个脚本,它将根据 debian 8 发行说明升级建议(大部分)以及使其无人值守的标志和环境变量运行。(
echo
s 仅用于调试,可以删除 - 虽然我建议保留它们,这样如果脚本卡住你就会知道在哪里)>= 适合 1.1
如果您使用的是 Apt 1.1 或更高版本,
--force-yes
则已弃用,因此您必须使用以开头的选项--allow
,例如--allow-downgrades
,--allow-remove-essential
,--allow-change-held-packages
。所以命令是:
注意:
--force-confold
用于保留旧配置和--force-confnew
保留新配置。来源:CFE-2360:使 apt_get 包模块版本感知。
有关的:
从
apt-get(8)
手册页:作为参考,该
-y
选项也适用yum(8)
。