如何防止 grub 重新安装

如何防止 grub 重新安装

我正在使用 bootloader refind,但从来都不想使用grub。Ubuntu Xenial 有时会自动将其拉入,然后我会收到一个提示,询问在哪里安装 grub bootloader。[1] 我明确地不想grub弄乱我的设置。

  • 我怎样才能知道为什么 grub 被调用?
  • 我怎样才能防止它再次被安装?

[1] 我说的‘它’是指grub-common,,,,,。grub-gfxpayload-listsgrub-pcgrub-pc-bingrub2-common

答案1

编辑2 2018-10-01:明白了。tl;dr 是apt-mark hold grub-foo(在所有所需的包上)是票,但似乎需要手动调用试图apt dist-upgrade引入的每个包。

$ sudo apt-mark hold grub*
grub2 set on hold.
grub set on hold.
grub-common set on hold.

[... a bunch more packages ...]

grub-pc set on hold.
grub-legacy-doc set on hold.
grub2-common set on hold.
grub-gfxpayload-lists set on hold.
grub-pc-bin set on hold.

但紧接着……

$ sudo apt dist-upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
  gcc-6-base:i386 grub-common:i386 grub-gfxpayload-lists:i386 grub-pc:i386 grub-pc-bin:i386 grub2-common:i386 ...

去想想吧。但是,手动指定上述grub*软件包可以apt-mark hold工作,并且apt dist-upgrade不再拉入 grub。

最后一条评论是我尝试过这个/etc/apt/preferences.d/grub-blacklist

Package: grub*
Pin: origin ""
Pin-Priority: -1

那没用。


编辑2018-10-01:这不是解决方案……即使使用下面的设置/etc/apt/apt.conf.d/01autoremoveapt dist-upgrade仍然会将其安装。未完待续……


我想我可能已经回答了这两个问题。

我怎样才能知道为什么 grub 被调用?

我最熟悉的是pacmanarch;它看起来相当于pacman -Qi pkg你得到一个列表,其中列出了哪些包需要指定的包。这是一个当量对于 ubuntu 来说:

$ apt-cache rdepends --installed grub-pc
|linux-image-4.15.0-34-generic
    grub-pc:i386

因此,Linux 内核的元包将其拉入。如果我有更多的时间/倾向,我会看看是否有一些包可以直接安装,而不是依赖这个便利包,但我现在不想这么做。

我怎样才能防止它再次被安装?

在寻找如何在 Ubuntu 中将黑名单列入黑名单时,有多种选择,但我选择了这个因为它看起来最不奇怪/最不俗气:

$ cat /etc/apt/apt.conf.d/01autoremove
{
  ...
  Never-MarkAuto-Sections
  {
    ...
    "grub*";
  };
};

相关内容