我想知道如何更新ubuntu 10.04衍生发行版中的grub-pc,而无需configuration基于grub-pc ncurses的对话框。 我已经尝试过检查前后的debconf-get-selections以及以下变体:
apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes -fuy install grub-pc
以及设置DEBIAN_FRONTEND:
export DEBIAN_FRONTEND=noninteractive
所有没有用,我想要做的是保持configuration文件的本地版本,并使用此代码在脚本中脱机安装。
你可以使用'debconf-set-selections'预先加载debconf回答
首先,在已安装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到远程计算机,并将其input到debconf-set-selections中。
你现在应该可以在没有debconf对话框的情况下远程安装grub-pc。
[稍后]
grub-pc软件包依赖于ucf,它为没有列为conffile的软件包拥有/创build的文件提供相同types的confeilepipe理。
到目前为止我检查过的所有系统上,/ 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不会inheritance你指定的dpkg –force-confold设置…但ucf可能没有办法知道这个。