如何避免在运行apt-get upgrade命令后出现GRUB错误 - Ubuntu

10

我在EC2上运行着Ubuntu 14.04。

运行apt-get upgrade后,会出现一个屏幕提示我重新安装GRUB引导加载程序。

以前安装的GRUB引导加载程序是安装到一个不存在的磁盘上,或者由于某些原因其唯一标识符已更改。 确保安装的GRUB核心镜像与GRUB模块和grub.cfg保持同步非常重要。请再次检查以确保GRUB被写入适当的引导设备。

  • 我该如何知道选择哪个设备?

  • 如果在我的机器上安装了其他EBS,我是否也应选择它们?

  • 我能否在升级期间避免这个提示,或者提供一些默认命令?

以下是相同的问题:

/boot/grub/menu.lst的新版本可用,但当前安装的版本已在本地修改。

  1. 安装软件包维护者的版本
  2. 保留当前安装的本地版本
  3. 显示版本之间的差异
  4. 显示版本之间的并排差异
  5. 显示可用版本之间的3路差异
  6. 做一个可用版本之间的3路合并(实验性质)
  7. 启动新的shell以检查情况
  • 我该如何知道选择哪个版本?

  • 我能否在升级期间避免这个提示,或者提供一些默认命令?


1
你解决了吗?我也遇到了同样的问题。 - geoidesic
1个回答

11

我遇到了类似的问题。

1)如果您查看man apt-get,您将找到一个配置选项-o。它允许为Debian软件包管理器dpkg设置选项。

2)在手册man dpkg中,您可以找到一组选项--force-confdef(强制保留默认选项而不提示)和--force-confold(强制保留旧的配置文件)。

在一些来源中,我发现人们也传递env变量DEBIAN_FRONTEND=noninteractive,但我在任何手册中都找不到它。

因此,在.sh脚本中,我使用以下最终命令来运行升级:

sudo DEBIAN_FRONTEND=noninteractive apt-get -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" upgrade

2
在我的man手册中,需要非常仔细的阅读才能找到--force-confold--force-confdef选项。太棒了! - Rustavore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接