无人值守的grub-pc更新

Modified on: Sun, 13 Oct 2019 11:40:02 +0800

我想知道如何在没有基于配置grub-pc ncurses的对话框的情况下更新ubuntu 10.04派生发行版上的grub-pc。我之前和之后尝试过检查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

一切无济于事,我希望保留配置文件的本地版本,并在脚本中使用此代码进行离线安装。

作者:fecko2130

最佳答案

您可以使用'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到远程计算机并将其输入debconf-set-selections。

您现在应该可以在没有debconf对话框的情况下远程安装grub-pc。

[稍后]

grub-pc软件包依赖于ucf,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可能无法知道这一点。

作者:,cas

相关问答

添加新评论