apt-get -y install <packages ...>在 Ubuntu 10.04 上运行时,我希望apt-get(或者aptitude如果这样更容易)在安装其他依赖项时不提示我(-y我理解的行为),但不提示我覆盖配置文件,而是假设始终保留现有的(这通常是默认值)。不幸的是,根据页面,它--trivial-only似乎与-y显示的提示相反,不会影响显示的提示man。
在特定的软件包奥赫为samba,nullmailer,localepurge并lighttpd强迫我与终端交互,即使整个过程,脚本和意思是是非交互式的。
我有一个 Ubuntu 16.04 虚拟机(本地,无云),它是作为另一台计算机的克隆创建的。每次使用 升级 GRUB 软件包时apt upgrade,我都会收到以下消息:1
GRUB 引导加载程序以前安装到不再存在的磁盘上,或者由于某种原因其唯一标识符已更改。确保安装的 GRUB 核心映像与 GRUB 模块和 grub.cfg 保持同步很重要。请再次检查以确保 GRUB 已写入适当的引导设备。
然后它要求选择一个安装设备。
我能够成功完成 GRUB 升级,但在下一次 GRUB 升级期间再次出现该消息,尽管磁盘在升级之间没有改变。
如何将 GRUB 配置“重置”为当前配置,使其不再询问?
我并不想沉默升级的消息为类似的问题(https://serverfault.com/questions/662624/how-to-avoid-grub-errors-after-runing-apt-get-upgrade-ubunut,我如何恰当-get -y dist-upgrade 没有 grub 配置提示?)建议。我想解决这个关于 GRUB 升级的特殊问题。
从命令最upvoted答案上ServerFault类似的问题无法在我的情况下应用,我没有提到的文件/boot/grub/menu.lst和update-grub-legacy-ec2我的机器上。
我尝试运行oldfred 建议的命令:
$ sudo debconf-show grub-pc
grub-pc/install_devices_failed_upgrade: true
grub-pc/mixed_legacy_and_grub2: true
grub-pc/install_devices_failed: false
grub-pc/hidden_timeout: false
grub2/update_nvram: true
grub-pc/timeout: 5
grub-pc/install_devices_empty: …Run Code Online (Sandbox Code Playgroud) 我发现了这个问题并且我的脚本基本上有同样的问题。
但!我不是用 packer 运行它,而是用一个简单的脚本:
DEBIAN_FRONTEND=noninteractive sudo apt-get update
DEBIAN_FRONTEND=noninteractive sudo dpkg --configure -aq
DEBIAN_FRONTEND=noninteractive sudo apt-get upgrade -yq --force-yes
DEBIAN_FRONTEND=noninteractive sudo apt-get dist-upgrade -yq --force-yes
Run Code Online (Sandbox Code Playgroud)
...和其他东西。
该脚本确实在 1404 上工作,但是对于 1604 Xenial 和 1804 Bionic,我遇到了问题,即对话框提示想要在脚本中打开并且不会自行继续。这是因为我无法在工作站上使用键盘输入进行响应。
在我看来,这个解决方案对于 GRUB 来说似乎风险太大,但我需要自动化,因为我无法手动更新数百台服务器。
我认为这是所有“新”1604 和 1804 机器的问题。
有人知道解决方案吗?
更新:我尝试了这个接受的答案解决方案,它给了我以下错误:
E: Invalid operation Dpkg::Options::=--force-confdef
Run Code Online (Sandbox Code Playgroud)