apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes -fuy install grub-pc
以及设置DEBIAN_FRONTEND:
export DEBIAN_FRONTEND=noninteractive
首先,在已经安装了grub-pc的主机上安装debconf-utils.然后运行:
debconf-get-selections | grep grub-pc > /tmp/grubpc.debconf
你将有一个看起来像这样的文件:
grub-pc grub2/kfreebsd_cmdline string grub-pc grub2/device_map_regenerated note grub-pc grub2/linux_cmdline string grub-pc grub-pc/install_devices_Failed boolean false grub-pc grub-pc/chainload_from_menu.lst boolean true grub-pc grub-pc/kopt_extracted boolean true grub-pc grub-pc/postrm_purge_boot_grub boolean false grub-pc grub2/kfreebsd_cmdline_default string quiet grub-pc grub2/linux_cmdline_default string grub-pc grub-pc/install_devices_empty boolean false grub-pc grub-pc/install_devices multiselect /dev/sda grub-pc grub-pc/install_devices_Failed_upgrade boolean true grub-pc grub-pc/install_devices_disks_changed multiselect /dev/sda grub-pc grub-pc/mixed_legacy_and_grub2 boolean true
接下来,编辑/tmp/grubpc.debconf以适应新系统.特别是grub-pc / install_devices条目.
您不需要所有这些条目.我的猜测是,对于grub-pc,你可能只需要install_devices和linux_cmdline *条目,并且(如果你以前安装了grub-legacy)可能是chainload_from_menu.lst条目.
编辑完文件后,将其scp到远程计算机并将其提供给debconf-set-selections.
您现在应该能够在没有debconf对话框的情况下远程安装grub-pc.
[后来]
grub-pc软件包依赖于ucf,它为未被列为conffile的软件包拥有/创建的文件提供相同类型的conffile管理.
在我迄今为止检查过的所有系统上,/ var / lib / ucf / cache /包含一个名为:etc:default:grub的文件,因此可能是导致此问题的候选者.
尝试取消注释目标计算机上/etc/ucf.conf中的’conf_force_conffold = YES’行.这可以自动批量升级许多机器,当然,使用scp或sed(似乎没有debconf条目).
如果这是导致它的原因,它忽略你的DEBIAN_FRONTEND =非交互设置的事实可能需要一个错误报告.看看这些脚本,debconf和ucf似乎都使用了DEBIAN_HAS_FRONTEND env var(但我不确定它是用户可定义还是内部使用.在手册页中没有提到它).
它也可能是一个错误,ucf没有继承你指定的dpkg –force-confold设置……但ucf可能无法知道这一点.