延迟 Arch Linux 上的内核升级

延迟 Arch Linux 上的内核升级

在 Arch Linux 上,每当应用内核升级(通过pacman -Su)时,就会出现问题。例如,iptables不能再使用:

# iptables -L
iptables v1.4.21: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.

VMWare 找不到内核头文件:

在此输入图像描述

现在,我想要应用内核升级,但我想推迟它们,直到我可以(或想要)重新启动系统(提醒任何人 Windows?)。否则,如果我的工作被 VMWare 或其他程序阻止iptables,我别无选择,只能重新启动并重建会话。

我怎样才能做到这一点?理想情况下,我想继续使用pacman -Su,但推迟某些升级。

我相信内核升级后需要重启才能挂载USB正常吗?是由同样的问题引起的。

答案1

如果您想避免pacman对某些软件包进行上/下评分,请在以下位置添加一行/etc/pacman.conf

# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
#IgnorePkg   =
#IgnoreGroup =

我想你想要这样的一行pacman.conf

IgnorePkg = linux linux-headers linux-api-headers 

正如您所指出的,这只会阻止pacman任何升级。你可能可以写一些像这样的代码:

if pacman -Qu | egrep -q -s 'linux|linux-headers|linux-api-headers'
then
    pacman -S --noconfirm linux
    pacman -S --noconfirm linux-headers
    pacman -S --noconfirm linux-api-headers
fi

看起来你必须写一个“系统单元文件“ - 这部分有点超出了我有信心告诉你该怎么做的范围。我的想法是Before=shutdown.target单元文件中的行使它在关闭时运行。我编写的唯一单元文件花了我几次尝试才正确,所以我真的认为你不需要我的建议。

答案2

要跳过升级内核,您可以运行:

pacman -Syu --ignore linux,linux-headers,linux-api-headers

这将允许你升级一切除了内核

答案3

我认为linux-api-headers不应该因为动机而忽视这个包裹

不要升级我的内核或忽略我的内核升级,也不要升级任何会破坏系统的软件包(如果单独升级而内核未升级)

看到这个回答在 Arch 维基论坛上。

我做了什么 IgnorePkg = linux linux-headers virtualbox-host-modules-arch

virtualbox-host-modules-arch仅当您安装了 VirtualBox 时才忽略pkg。 pkg也一样linux-headers。因为我已经安装了它们,所以我这样做了。

相关内容