我正在使用 bootloader refind
,但从来都不想使用grub
。Ubuntu Xenial 有时会自动将其拉入,然后我会收到一个提示,询问在哪里安装 grub bootloader。[1] 我明确地不想grub
弄乱我的设置。
- 我怎样才能知道为什么 grub 被调用?
- 我怎样才能防止它再次被安装?
[1] 我说的‘它’是指grub-common
,,,,,。grub-gfxpayload-lists
grub-pc
grub-pc-bin
grub2-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/01autoremove
,apt dist-upgrade
仍然会将其安装。未完待续……
我想我可能已经回答了这两个问题。
我怎样才能知道为什么 grub 被调用?
我最熟悉的是pacman
arch;它看起来相当于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*";
};
};